tony590
tony590

Reputation: 145

socket.io doesn't receive data

I have a simple client server web app that is using web sockets to send / receive information. The client can connect and receives properly the config file but then when I try to send a "test' message from the client using "socket.emit('message', {my: 'data'});" it doesn't display on the server. I did check with wireshark and the packets are arriving at the server.

var sIoPort = 8181;
var host = '192.168.4.111';
var fs = require('fs');

var iniMsg = fs.readFileSync('data.json','utf8');

var http = require("http").createServer(function (req, res) {
   res.writeHead(200, {'Content-Type': 'text/html'});
   res.end(index);
});
http.listen(sIoPort,host);

var browserServer = require('socket.io').listen(http);
browserServer.on('connection', function (socket) {
   console.log('Client websocket connected');

   // send the config file if available
   browserServer.sockets.emit('msg',iniMsg.toString());  
});

browserServer.on('message', function (message) {
  console.log('received message: ' + message);
}); 

client side

///////////////////////////////////////////////////////////////////////////////
socket = io.connect("192.168.4.111",{"port":8181});
socket.on('connect',function() {if(DEBUG) console.log('Socket Connected');});
socket.emit('message', {my: 'data'}); // test if server receives message
socket.on('msg',function(data) {
   var json = JSON.parse(data);

   // add the maps to the the GUI
   switch(json.type) {
       case 'maps': add_maps_from_json(json, null);
                    break; 
   }
 });

 socket.on('disconnect',function() {if(DEBUG) console.log('Socket Disconnected');});
 /////////////////////////////////////////////////////////////////////////////////

Upvotes: 0

Views: 1521

Answers (1)

max
max

Reputation: 6069

Modify the serverside listener so it's paying attention to events on a socket:

browserServer.on('connection', function (socket) {
  console.log('Client websocket connected');

   // send the config file if available
  browserServer.sockets.emit('msg',iniMsg.toString());

  socket.on('message', function (message) {
    console.log('received message: ' + message);
  });   

});

Upvotes: 2

Related Questions