e2385420b55708eb7de4ec1e176bd8cec01b803effcfa2330a0b813f99caf3550d055c89298fb9d76ba046324f91f08cbc1701f2553a6b085891863a68cf0a 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 'use strict';
  2. var inherits = require('inherits')
  3. , urlUtils = require('../../utils/url')
  4. , BufferedSender = require('./buffered-sender')
  5. , Polling = require('./polling')
  6. ;
  7. var debug = function() {};
  8. if (process.env.NODE_ENV !== 'production') {
  9. debug = require('debug')('sockjs-client:sender-receiver');
  10. }
  11. function SenderReceiver(transUrl, urlSuffix, senderFunc, Receiver, AjaxObject) {
  12. var pollUrl = urlUtils.addPath(transUrl, urlSuffix);
  13. debug(pollUrl);
  14. var self = this;
  15. BufferedSender.call(this, transUrl, senderFunc);
  16. this.poll = new Polling(Receiver, pollUrl, AjaxObject);
  17. this.poll.on('message', function(msg) {
  18. debug('poll message', msg);
  19. self.emit('message', msg);
  20. });
  21. this.poll.once('close', function(code, reason) {
  22. debug('poll close', code, reason);
  23. self.poll = null;
  24. self.emit('close', code, reason);
  25. self.close();
  26. });
  27. }
  28. inherits(SenderReceiver, BufferedSender);
  29. SenderReceiver.prototype.close = function() {
  30. BufferedSender.prototype.close.call(this);
  31. debug('close');
  32. this.removeAllListeners();
  33. if (this.poll) {
  34. this.poll.abort();
  35. this.poll = null;
  36. }
  37. };
  38. module.exports = SenderReceiver;