Dist 2.1.0 With Engine.IO 1.0.5 Connection #196

Closed
alexcurtis opened this Issue Mar 26, 2014 · 36 comments

Comments

Projects
None yet
6 participants
@alexcurtis

I recently upgraded to the latest Primus + Engine.io versions. It seems to infinitely loop when creating a connection from the browser. primus.on('connection') seems to be repeatedly triggered on a single connection.

@3rd-Eden

This comment has been minimized.

Show comment
Hide comment
@3rd-Eden

3rd-Eden Mar 26, 2014

Member

That sounds really bad.

Member

3rd-Eden commented Mar 26, 2014

That sounds really bad.

@3rd-Eden 3rd-Eden added bug and removed bug labels Mar 26, 2014

@3rd-Eden

This comment has been minimized.

Show comment
Hide comment
@3rd-Eden

3rd-Eden Mar 26, 2014

Member

@alexcurtis do you have a minimal test that reproduces this? The integrations tests run fine here.

Member

3rd-Eden commented Mar 26, 2014

@alexcurtis do you have a minimal test that reproduces this? The integrations tests run fine here.

@alexcurtis

This comment has been minimized.

Show comment
Hide comment
@alexcurtis

alexcurtis Mar 26, 2014

Whoops. It looks like the browser had cached an old development primus.js file. So the connection is fine. But when I try to write data I'm getting:

buffer.js:499
    buf.copy(buffer, pos);
        ^
TypeError: Object  has no method 'copy'
    at Function.Buffer.concat (buffer.js:499:9)
    at IncomingMessage.onData (./node_modules/engine.io/lib/transports/polling.js:145:23)
    at IncomingMessage.EventEmitter.emit (events.js:95:17)
    at IncomingMessage.<anonymous> (_stream_readable.js:746:14)
    at IncomingMessage.EventEmitter.emit (events.js:92:17)
    at emitDataEvents (_stream_readable.js:771:10)
    at IncomingMessage.Readable.on (_stream_readable.js:692:5)
    at XHR.Polling.onDataRequest (./node_modules/engine.io/lib/transports/polling.js:163:7)
    at XHR.Polling.onRequest (./node_modules/engine.io/lib/transports/polling.js:55:10)
    at XHR.onRequest (./node_modules/engine.io/lib/transports/polling-xhr.js:47:33)

Could this be an issue with the binary additions to engine.io?

Whoops. It looks like the browser had cached an old development primus.js file. So the connection is fine. But when I try to write data I'm getting:

buffer.js:499
    buf.copy(buffer, pos);
        ^
TypeError: Object  has no method 'copy'
    at Function.Buffer.concat (buffer.js:499:9)
    at IncomingMessage.onData (./node_modules/engine.io/lib/transports/polling.js:145:23)
    at IncomingMessage.EventEmitter.emit (events.js:95:17)
    at IncomingMessage.<anonymous> (_stream_readable.js:746:14)
    at IncomingMessage.EventEmitter.emit (events.js:92:17)
    at emitDataEvents (_stream_readable.js:771:10)
    at IncomingMessage.Readable.on (_stream_readable.js:692:5)
    at XHR.Polling.onDataRequest (./node_modules/engine.io/lib/transports/polling.js:163:7)
    at XHR.Polling.onRequest (./node_modules/engine.io/lib/transports/polling.js:55:10)
    at XHR.onRequest (./node_modules/engine.io/lib/transports/polling-xhr.js:47:33)

Could this be an issue with the binary additions to engine.io?

@3rd-Eden

This comment has been minimized.

Show comment
Hide comment
@3rd-Eden

3rd-Eden Mar 26, 2014

Member

What kind of data are you writing and which node version are your running?

On Wednesday 26 March 2014 at 18:47, Alex Curtis wrote:

Whoops. It looks like the browser had cached an old development primus.js file. So the connection is fine. But when I try to write data I'm getting:
buffer.js:499 buf.copy(buffer, pos); ^ TypeError: Object has no method 'copy' at Function.Buffer.concat (buffer.js:499:9) at IncomingMessage.onData (./node_modules/engine.io/lib/transports/polling.js:145:23 (http://engine.io/lib/transports/polling.js:145:23)) at IncomingMessage.EventEmitter.emit (events.js:95:17) at IncomingMessage. (_stream_readable.js:746:14) at IncomingMessage.EventEmitter.emit (events.js:92:17) at emitDataEvents (_stream_readable.js:771:10) at IncomingMessage.Readable.on (_stream_readable.js:692:5) at XHR.Polling.onDataRequest (./node_modules/engine.io/lib/transports/polling.js:163:7 (http://engine.io/lib/transports/polling.js:163:7)) at XHR.Polling.onRequest (./node_modules/engine.io/lib/transports/polling.js:55:10 (http://engine.io/lib/transports/polling.js:55:10)) at XHR.onRequest (./node_modules/engine.io/lib/transports/polling-xhr.js:47:33 (http://engine.io/lib/transports/polling-xhr.js:47:33))
Could this be an issue with the binary additions to engine.io (http://engine.io)?


Reply to this email directly or view it on GitHub (#196 (comment)).

Member

3rd-Eden commented Mar 26, 2014

What kind of data are you writing and which node version are your running?

On Wednesday 26 March 2014 at 18:47, Alex Curtis wrote:

Whoops. It looks like the browser had cached an old development primus.js file. So the connection is fine. But when I try to write data I'm getting:
buffer.js:499 buf.copy(buffer, pos); ^ TypeError: Object has no method 'copy' at Function.Buffer.concat (buffer.js:499:9) at IncomingMessage.onData (./node_modules/engine.io/lib/transports/polling.js:145:23 (http://engine.io/lib/transports/polling.js:145:23)) at IncomingMessage.EventEmitter.emit (events.js:95:17) at IncomingMessage. (_stream_readable.js:746:14) at IncomingMessage.EventEmitter.emit (events.js:92:17) at emitDataEvents (_stream_readable.js:771:10) at IncomingMessage.Readable.on (_stream_readable.js:692:5) at XHR.Polling.onDataRequest (./node_modules/engine.io/lib/transports/polling.js:163:7 (http://engine.io/lib/transports/polling.js:163:7)) at XHR.Polling.onRequest (./node_modules/engine.io/lib/transports/polling.js:55:10 (http://engine.io/lib/transports/polling.js:55:10)) at XHR.onRequest (./node_modules/engine.io/lib/transports/polling-xhr.js:47:33 (http://engine.io/lib/transports/polling-xhr.js:47:33))
Could this be an issue with the binary additions to engine.io (http://engine.io)?


Reply to this email directly or view it on GitHub (#196 (comment)).

@alexcurtis

This comment has been minimized.

Show comment
Hide comment
@alexcurtis

alexcurtis Mar 26, 2014

Standard write stuff really. Something like:

primus.write({type: type, payload: data});

Node Version: v0.10.26

Standard write stuff really. Something like:

primus.write({type: type, payload: data});

Node Version: v0.10.26

@3rd-Eden

This comment has been minimized.

Show comment
Hide comment
@3rd-Eden

3rd-Eden Mar 26, 2014

Member

I can't reproduce this. This was my testcase:

'use strict';

var server = require('http').createServer(function (req, res) {
  require('fs').createReadStream(__dirname + req.url).pipe(res);
});

var Primus = require('primus')
  , primus = new Primus(server, { transformer: 'engine.io' });

primus.on('connection', function (spark) {
  primus.write({type: 'bar', payload: ['foo']});
});

primus.use('emitter', require('primus-emitter'));
server.listen(3333);

HTML:

<script src="/primus/primus.js"></script>
<script>
  var primus = new Primus();

  primus.on('data', console.log.bind(console));
</script>

Which outputted:

Object {type: "bar", payload: Array[1]}
 "{"type":"bar","payload":["foo"]}"
Member

3rd-Eden commented Mar 26, 2014

I can't reproduce this. This was my testcase:

'use strict';

var server = require('http').createServer(function (req, res) {
  require('fs').createReadStream(__dirname + req.url).pipe(res);
});

var Primus = require('primus')
  , primus = new Primus(server, { transformer: 'engine.io' });

primus.on('connection', function (spark) {
  primus.write({type: 'bar', payload: ['foo']});
});

primus.use('emitter', require('primus-emitter'));
server.listen(3333);

HTML:

<script src="/primus/primus.js"></script>
<script>
  var primus = new Primus();

  primus.on('data', console.log.bind(console));
</script>

Which outputted:

Object {type: "bar", payload: Array[1]}
 "{"type":"bar","payload":["foo"]}"
@alexcurtis

This comment has been minimized.

Show comment
Hide comment
@alexcurtis

alexcurtis Mar 26, 2014

I'll have a try using that test case. It was a write from the browser => server though not the other way round. Thanks.

I'll have a try using that test case. It was a write from the browser => server though not the other way round. Thanks.

@lpinca

This comment has been minimized.

Show comment
Hide comment
@lpinca

lpinca Mar 26, 2014

Member

@alexcurtis i've tried the other way, from client to server using the polling transport as shown in your report but still no luck on reproducing it.
Any info on the browser?

Member

lpinca commented Mar 26, 2014

@alexcurtis i've tried the other way, from client to server using the polling transport as shown in your report but still no luck on reproducing it.
Any info on the browser?

@3rd-Eden

This comment has been minimized.

Show comment
Hide comment
@3rd-Eden

3rd-Eden Mar 26, 2014

Member

Also tried it the other way around and forcing websockets:false in the primus client to force polling transports, no luck.

Member

3rd-Eden commented Mar 26, 2014

Also tried it the other way around and forcing websockets:false in the primus client to force polling transports, no luck.

@alexcurtis

This comment has been minimized.

Show comment
Hide comment
@alexcurtis

alexcurtis Mar 26, 2014

Looks like its happening in the authorization callback. If I spend too long in there it fails.
If I immediately return accept(null, true); its fine. If I have a couple of async callbacks for session lookup (or have a timeout for demo purpose) it errors.

Ok:

function(data, accept){
   return accept(null, true);
}

Example Failure. I'd never do this, but my async session calls have the same affect.

function(data, accept){
   setTimeout(function() { return accept(null, true); }, 2000);
}

Looks like its happening in the authorization callback. If I spend too long in there it fails.
If I immediately return accept(null, true); its fine. If I have a couple of async callbacks for session lookup (or have a timeout for demo purpose) it errors.

Ok:

function(data, accept){
   return accept(null, true);
}

Example Failure. I'd never do this, but my async session calls have the same affect.

function(data, accept){
   setTimeout(function() { return accept(null, true); }, 2000);
}
@3rd-Eden

This comment has been minimized.

Show comment
Hide comment
@3rd-Eden

3rd-Eden Mar 27, 2014

Member

Reproduced using

server

'use strict';

var server = require('http').createServer(function (req, res) {
  require('fs').createReadStream(__dirname + req.url).pipe(res);
});

var Primus = require('primus')
  , primus = new Primus(server, { transformer: 'engine.io' });

primus.on('connection', function (spark) {
  primus.write({type: 'bar', payload: ['foo']});
  spark.on('data', function (data) {
    console.log(data);
  });
});
primus.authorize(function (req, next) {
  setTimeout(next.bind(next, undefined, true), 10000);
});

primus.use('emitter', require('primus-emitter'));
server.listen(3333);

client

<script src="/primus/primus.js"></script>
<script>
  var primus = new Primus('http://localhost:3333', {
    websockets: false,
    timeout: 100000
  });

  primus.on('data', console.log.bind(console));
  primus.write({type: 'bar', payload: ['foo']});
</script>
Member

3rd-Eden commented Mar 27, 2014

Reproduced using

server

'use strict';

var server = require('http').createServer(function (req, res) {
  require('fs').createReadStream(__dirname + req.url).pipe(res);
});

var Primus = require('primus')
  , primus = new Primus(server, { transformer: 'engine.io' });

primus.on('connection', function (spark) {
  primus.write({type: 'bar', payload: ['foo']});
  spark.on('data', function (data) {
    console.log(data);
  });
});
primus.authorize(function (req, next) {
  setTimeout(next.bind(next, undefined, true), 10000);
});

primus.use('emitter', require('primus-emitter'));
server.listen(3333);

client

<script src="/primus/primus.js"></script>
<script>
  var primus = new Primus('http://localhost:3333', {
    websockets: false,
    timeout: 100000
  });

  primus.on('data', console.log.bind(console));
  primus.write({type: 'bar', payload: ['foo']});
</script>
@alexcurtis

This comment has been minimized.

Show comment
Hide comment
@alexcurtis

alexcurtis Mar 27, 2014

Brilliant! Great Job! Thanks guys. :-)
Any chance we could wrap this into a new distribution tag please?

Brilliant! Great Job! Thanks guys. :-)
Any chance we could wrap this into a new distribution tag please?

@3rd-Eden

This comment has been minimized.

Show comment
Hide comment
@3rd-Eden

3rd-Eden Mar 28, 2014

Member

@alexcurtis 2.1.2 has been released, which also includes these changes.

Member

3rd-Eden commented Mar 28, 2014

@alexcurtis 2.1.2 has been released, which also includes these changes.

@Morhaus

This comment has been minimized.

Show comment
Hide comment
@Morhaus

Morhaus May 10, 2014

This exact issue still arises when using a middleware.

Example (taken from the express example):

primus.before('session', function(req, res, next) {
  var sid = req.signedCookies.sid;

  req.session = {};

  if (!sid)
    return next();

  sessionStore.get(sid, function(err, session) {
    if (err) {
      primus.emit('log', 'error', err);
      return next();
    }

    if (session)
      req.session = session;

    next();
  });
});

Calling primus.write({event: 'message'}) on the client will crash the server with the error

buffer.js:499
    buf.copy(buffer, pos);
        ^
TypeError: Object  has no method 'copy'
  at Function.Buffer.concat (buffer.js:499:9)
  at IncomingMessage.onData (/dev/node_modules/engine.io/lib/transports/polling.js:147:23)
  at IncomingMessage.EventEmitter.emit (events.js:95:17)
  at IncomingMessage.<anonymous> (_stream_readable.js:746:14)
  at IncomingMessage.EventEmitter.emit (events.js:92:17)
  at emitDataEvents (_stream_readable.js:771:10)
  at IncomingMessage.Readable.on (_stream_readable.js:692:5)
  at XHR.Polling.onDataRequest (/dev/node_modules/engine.io/lib/transports/polling.js:171:7)
  at XHR.Polling.onRequest (/dev/node_modules/engine.io/lib/transports/polling.js:55:10)
  at XHR.onRequest (/dev/node_modules/engine.io/lib/transports/polling-xhr.js:47:33)
  at /dev/node_modules/engine.io/lib/server.js:178:46
  at Server.verify (/dev/node_modules/engine.io/lib/server.js:126:3)
  at Server.handleRequest (/dev/node_modules/engine.io/lib/server.js:170:8)
  at [object Object].request (/dev/node_modules/primus/transformers/engine.io/server.js:59:18)
  at [object Object].emit (/dev/node_modules/primus/node_modules/eventemitter3/index.js:53:12)
  at emit (/dev/node_modules/primus/node_modules/fusing/index.js:131:24)
  at iterate (/dev/node_modules/primus/transformer.js:120:24)
  at done (/dev/node_modules/primus/transformer.js:142:7)

EDIT: Nevermind, the solution proposed here fixes the issue.

Morhaus commented May 10, 2014

This exact issue still arises when using a middleware.

Example (taken from the express example):

primus.before('session', function(req, res, next) {
  var sid = req.signedCookies.sid;

  req.session = {};

  if (!sid)
    return next();

  sessionStore.get(sid, function(err, session) {
    if (err) {
      primus.emit('log', 'error', err);
      return next();
    }

    if (session)
      req.session = session;

    next();
  });
});

Calling primus.write({event: 'message'}) on the client will crash the server with the error

buffer.js:499
    buf.copy(buffer, pos);
        ^
TypeError: Object  has no method 'copy'
  at Function.Buffer.concat (buffer.js:499:9)
  at IncomingMessage.onData (/dev/node_modules/engine.io/lib/transports/polling.js:147:23)
  at IncomingMessage.EventEmitter.emit (events.js:95:17)
  at IncomingMessage.<anonymous> (_stream_readable.js:746:14)
  at IncomingMessage.EventEmitter.emit (events.js:92:17)
  at emitDataEvents (_stream_readable.js:771:10)
  at IncomingMessage.Readable.on (_stream_readable.js:692:5)
  at XHR.Polling.onDataRequest (/dev/node_modules/engine.io/lib/transports/polling.js:171:7)
  at XHR.Polling.onRequest (/dev/node_modules/engine.io/lib/transports/polling.js:55:10)
  at XHR.onRequest (/dev/node_modules/engine.io/lib/transports/polling-xhr.js:47:33)
  at /dev/node_modules/engine.io/lib/server.js:178:46
  at Server.verify (/dev/node_modules/engine.io/lib/server.js:126:3)
  at Server.handleRequest (/dev/node_modules/engine.io/lib/server.js:170:8)
  at [object Object].request (/dev/node_modules/primus/transformers/engine.io/server.js:59:18)
  at [object Object].emit (/dev/node_modules/primus/node_modules/eventemitter3/index.js:53:12)
  at emit (/dev/node_modules/primus/node_modules/fusing/index.js:131:24)
  at iterate (/dev/node_modules/primus/transformer.js:120:24)
  at done (/dev/node_modules/primus/transformer.js:142:7)

EDIT: Nevermind, the solution proposed here fixes the issue.

@STRML

This comment has been minimized.

Show comment
Hide comment
@STRML

STRML Sep 24, 2015

Contributor

I've been seeing this crop up again intermittently with the polling transport. Will post again once I have a working test case.

Contributor

STRML commented Sep 24, 2015

I've been seeing this crop up again intermittently with the polling transport. Will post again once I have a working test case.

@episodeyang

This comment has been minimized.

Show comment
Hide comment
@episodeyang

episodeyang Oct 8, 2015

I am seeing this as well with the newest release. Not sure how to reproduce yet.

One of the things is that I might have tons of clients with older version trying to reconnect. Would this be a factor?

I am seeing this as well with the newest release. Not sure how to reproduce yet.

One of the things is that I might have tons of clients with older version trying to reconnect. Would this be a factor?

@lpinca

This comment has been minimized.

Show comment
Hide comment
@lpinca

lpinca Oct 8, 2015

Member

@episodeyang It shouldn't as this is a server-side issue.

Member

lpinca commented Oct 8, 2015

@episodeyang It shouldn't as this is a server-side issue.

@episodeyang

This comment has been minimized.

Show comment
Hide comment
@episodeyang

episodeyang Oct 8, 2015

I see, thanks! I will keep you posted if I see this happen again.

I see, thanks! I will keep you posted if I see this happen again.

@episodeyang

This comment has been minimized.

Show comment
Hide comment
@episodeyang

episodeyang Oct 8, 2015

okay this keeps happening

screenshot 2015-10-08 09 36 13

okay this keeps happening

screenshot 2015-10-08 09 36 13

@STRML

This comment has been minimized.

Show comment
Hide comment
@STRML

STRML Oct 8, 2015

Contributor

So this is a Node v4 issue that has to do with how Buffers have changed - see nodejs/node#3025

Essentially Buffer.concat([String]) never should have worked, but Buffer.concat(['foo']) actually did and would return 'foo'.

The actual change was:

Buffer.concat() now always creates a new buffer, even if only called with one element.

This likely has to be fixed in engine.io itself.

Contributor

STRML commented Oct 8, 2015

So this is a Node v4 issue that has to do with how Buffers have changed - see nodejs/node#3025

Essentially Buffer.concat([String]) never should have worked, but Buffer.concat(['foo']) actually did and would return 'foo'.

The actual change was:

Buffer.concat() now always creates a new buffer, even if only called with one element.

This likely has to be fixed in engine.io itself.

@episodeyang

This comment has been minimized.

Show comment
Hide comment
@episodeyang

episodeyang Oct 8, 2015

Thanks!

is there still an engine.io issue for this?

and also for the mean while, what other transport would you recommend if I need this in production?

best, Ge

Thanks!

is there still an engine.io issue for this?

and also for the mean while, what other transport would you recommend if I need this in production?

best, Ge

@STRML

This comment has been minimized.

Show comment
Hide comment
@STRML

STRML Oct 8, 2015

Contributor

No issue, I've created one.

This is a DoS vector so we need to figure out a solution ASAP. In the meantime you could switch to SockJS.

Contributor

STRML commented Oct 8, 2015

No issue, I've created one.

This is a DoS vector so we need to figure out a solution ASAP. In the meantime you could switch to SockJS.

@episodeyang

This comment has been minimized.

Show comment
Hide comment
@episodeyang

episodeyang Oct 8, 2015

Thanks! will do.

Thanks! will do.

@STRML

This comment has been minimized.

Show comment
Hide comment
@STRML

STRML Oct 8, 2015

Contributor

@episodeyang What version of Node are you using? I was able to reproduce but only on 0.10.x.

Contributor

STRML commented Oct 8, 2015

@episodeyang What version of Node are you using? I was able to reproduce but only on 0.10.x.

@lpinca

This comment has been minimized.

Show comment
Hide comment
@lpinca

lpinca Oct 8, 2015

Member

I've just noticed that the original fix of this issue is no longer needed in node 0.12 and above.

Member

lpinca commented Oct 8, 2015

I've just noticed that the original fix of this issue is no longer needed in node 0.12 and above.

@STRML

This comment has been minimized.

Show comment
Hide comment
@STRML

STRML Oct 8, 2015

Contributor

Primus is still supporting 0.10 though, right?

Contributor

STRML commented Oct 8, 2015

Primus is still supporting 0.10 though, right?

@lpinca

This comment has been minimized.

Show comment
Hide comment
@lpinca

lpinca Oct 8, 2015

Member

Yes, we offically dropped 0.8 support in version 4.0.0.

Member

lpinca commented Oct 8, 2015

Yes, we offically dropped 0.8 support in version 4.0.0.

@lpinca

This comment has been minimized.

Show comment
Hide comment
@lpinca

lpinca Oct 8, 2015

Member

If socketio/engine.io#305 will get merged we can also remove the workaround proposed here as that patch also fixes the issue on node 0.10.

Member

lpinca commented Oct 8, 2015

If socketio/engine.io#305 will get merged we can also remove the workaround proposed here as that patch also fixes the issue on node 0.10.

@3rd-Eden

This comment has been minimized.

Show comment
Hide comment
@3rd-Eden

3rd-Eden Oct 9, 2015

Member

@STRML Yes 0.10 is still support in 4.0.0 but will be dropped in 5.0.0 as I want to move to the whole codebase to node 4.0.0 as soon as possible so we can start writing our code in ES6

Member

3rd-Eden commented Oct 9, 2015

@STRML Yes 0.10 is still support in 4.0.0 but will be dropped in 5.0.0 as I want to move to the whole codebase to node 4.0.0 as soon as possible so we can start writing our code in ES6

@episodeyang

This comment has been minimized.

Show comment
Hide comment
@episodeyang

episodeyang Oct 9, 2015

Sigh I started working on migrating to 0.12.7 four hours ago. I'm still working on it :/

How is the node 4.0.0 support for libraries so far?

Sigh I started working on migrating to 0.12.7 four hours ago. I'm still working on it :/

How is the node 4.0.0 support for libraries so far?

@lpinca

This comment has been minimized.

Show comment
Hide comment
@lpinca

lpinca Oct 9, 2015

Member

@episodeyang If I was you migrating from 0.10, I would have jumped directly to node 4.

Member

lpinca commented Oct 9, 2015

@episodeyang If I was you migrating from 0.10, I would have jumped directly to node 4.

@episodeyang

This comment has been minimized.

Show comment
Hide comment
@episodeyang

episodeyang Oct 9, 2015

Got it, I noticed that 0.12.7 is very similar to 4.0.0

So 4.0.0 is good for production? I'm too tired to think straight now.

Got it, I noticed that 0.12.7 is very similar to 4.0.0

So 4.0.0 is good for production? I'm too tired to think straight now.

@lpinca

This comment has been minimized.

Show comment
Hide comment
@lpinca

lpinca Oct 9, 2015

Member

node 4.2.0 will be the first LTS release, so yes, it's safe for production.

Member

lpinca commented Oct 9, 2015

node 4.2.0 will be the first LTS release, so yes, it's safe for production.

@episodeyang

This comment has been minimized.

Show comment
Hide comment
@episodeyang

episodeyang Oct 9, 2015

kk I will do that now. Thanks!

kk I will do that now. Thanks!

@3rd-Eden

This comment has been minimized.

Show comment
Hide comment
@3rd-Eden

3rd-Eden Oct 9, 2015

Member

Being a LTS release is also one of the reasons why I want to deprecate all previous node versions as soon as possible.

Member

3rd-Eden commented Oct 9, 2015

Being a LTS release is also one of the reasons why I want to deprecate all previous node versions as soon as possible.

@lpinca

This comment has been minimized.

Show comment
Hide comment
@lpinca

lpinca Nov 29, 2015

Member

engine.io@1.6.1 should fix this. If it is not the case, please post back.

Member

lpinca commented Nov 29, 2015

engine.io@1.6.1 should fix this. If it is not the case, please post back.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment