| 'use strict'; |
| |
| var inherits = require('inherits') |
| , urlUtils = require('../../utils/url') |
| , BufferedSender = require('./buffered-sender') |
| , Polling = require('./polling') |
| ; |
| |
| var debug = function() {}; |
| if (process.env.NODE_ENV !== 'production') { |
| debug = require('debug')('sockjs-client:sender-receiver'); |
| } |
| |
| function SenderReceiver(transUrl, urlSuffix, senderFunc, Receiver, AjaxObject) { |
| var pollUrl = urlUtils.addPath(transUrl, urlSuffix); |
| debug(pollUrl); |
| var self = this; |
| BufferedSender.call(this, transUrl, senderFunc); |
| |
| this.poll = new Polling(Receiver, pollUrl, AjaxObject); |
| this.poll.on('message', function(msg) { |
| debug('poll message', msg); |
| self.emit('message', msg); |
| }); |
| this.poll.once('close', function(code, reason) { |
| debug('poll close', code, reason); |
| self.poll = null; |
| self.emit('close', code, reason); |
| self.close(); |
| }); |
| } |
| |
| inherits(SenderReceiver, BufferedSender); |
| |
| SenderReceiver.prototype.close = function() { |
| BufferedSender.prototype.close.call(this); |
| debug('close'); |
| this.removeAllListeners(); |
| if (this.poll) { |
| this.poll.abort(); |
| this.poll = null; |
| } |
| }; |
| |
| module.exports = SenderReceiver; |