Skip to content Skip to sidebar Skip to footer

Socket.io Connection Crashing Node.js Server

I've never really used Socket.io before, so I don't understand how it works. That's why I went to start following this tutorial: http://danielnill.com/nodejs-tutorial-with-socketio

Solution 1:

You need to instanciate the socket.io server with the server instance instead of using listen, else it will create its own http server.

server.js:

var http = require('http');
var url = require('url');
var fs = require('fs');

var server = http.createServer(handler);
var io = require('socket.io')(server);

var handler = function(request, response){
console.log('Connection');
var path = url.parse(request.url).pathname;

var waitToEnd = false;

switch(path){
    case "/":
        console.log("Returning homepage");
        response.writeHead(200, {'Content-Type':'text/html'});
        response.write('<strong>Hello World</strong>');
    break;
    case "/socket.html":
        waitToEnd = true;
        console.log("Returning socket page.");
        fs.readFile(__dirname + path, function(error, data){
            if(error){
                console.log("Error...");
                response.writeHead(404);
                response.write('ERROR 404');
            }
            else{
                console.log("Success...");
                response.writeHead(200, {'Content-Type': 'text/html'});
                response.write(data, "utf8");
            }
            response.end();
            console.log("Continuing...");
        });
    break;
    default:
        response.writeHead(404);
        response.write('ERROR 404');
    break;
}
if (!waitToEnd){
    response.end();
}
};

console.log("server listening");
server.listen(8001);

io.on('connection', function(socket) {
  console.log("socket connected");
  socket.emit('test', { hello: 'world' });
  socket.on('test_in', function(data) {
    console.log(data);
  });
});

client.js:

<scriptsrc="/socket.io/socket.io.js"></script><script>var socket = io();
  socket.on('test', function (data) {
    console.log(data);
    socket.emit('test_in', { hello: 'too' });
  });
</script>

Post a Comment for "Socket.io Connection Crashing Node.js Server"