Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Socket.IO infinite loop on connection

Socket.IO make an infinte loop on connection ! It's weird and never happen until now. I don't know what's wrong. I try to rebuild the package, I copy some code from an older source and the same result...

io.on('connection', function(socket){
  console.log('someone connected << infinite loop');
});

It's a basic ExpressJS server with http on top.

const
port        = process.env.PORT || 3200,
app         = require('express')(),
express     = require('express'),
mysql       = require('mysql'),
bodyParser  = require('body-parser'),
path        = require('path'),
methodOverride = require('method-override'),
http        = require('http').Server(app),
io          = require('socket.io')(http);

Client-Side

var socket = io();
like image 606
Rafael Stepan Avatar asked Jul 04 '17 20:07

Rafael Stepan


2 Answers

The problem was at the client-side, I don't load the latest version of socket.io like on the server-side. In my package.json I have 2.0.3 and at the client-side was 1.2.0.. For everyone who have this problem

like image 179
Rafael Stepan Avatar answered Sep 22 '22 12:09

Rafael Stepan


This happened to me when I emitted an array (on connection) and not an object...

I solved it by wrapping the array with {} so I'm now sending an object... i.e {array}...

e.g:

myArray = [{blah:"some value"},{blah2:"some other value"}];

socket.emit('target',myArray); //results in infinite loop

socket.emit('target',{myArray}); //sends ok and not looping

No need for socket version to match on server and client... in my case the client is c# and my server is node.js

like image 23
urfx Avatar answered Sep 21 '22 12:09

urfx