socket.io.js not found


Question

For some reason my node server cannot serve the route /socket.io/socket.io.js, I always get a 404 error.
I tried compiling different node versions (current is 0.6.13 which also runs on server, where it actually works).
From the app.js I get info: socket.io started and no error when trying to call the socket.io.js.

I try it from localhost and port 8000 and I use the express framework

This is the code from app.js:

var express = require('express')
  , app = require('express').createServer()
  , io = require('socket.io').listen(app, { log: true });

app.listen(8000);

app.configure(function() {
    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

io.sockets.on('connection', function (socket) {
   // all other stuff here
1
43
4/17/2012 12:24:47 PM

Accepted Answer

Please check your Express version. Express recently is updated to 3.0alpha which API was changed. If 3.0 you can change your code to something likes this:

var express = require('express')
  , http = require('http');

var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);

...

server.listen(8000);

Same issue with connect: https://github.com/senchalabs/connect/issues/500#issuecomment-4620773

95
4/17/2012 1:46:59 PM

Using with the Express 3 web framework: (from socket.io)

> Express 3 requires that you instantiate a http.Server to attach socket.io to first:

meaning - (1) you must create a server instance:

var app = express();
var http = require('http').createServer(app);

(2) couple it with the socket.io:

var io = require('socket.io');
io.listen(http);

and ONLY THEN - (3) make the server listen:

http.listen(8080);

make sure you keep this order!


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon