Reputation: 14502
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
Upvotes: 45
Views: 39897
Reputation: 7118
The default port 3000 did not work for me, even though it is not in use. It fails with a 404 error for /socket.io/socket.io.js
(and no other notification or explanation). Try a different port that you're sure is not in use, and it might work for you.
Upvotes: 0
Reputation: 5338
Install Socket.io inside your repository:
npm install socket.io --save
After, config the server:
var express = require('express')
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
server.listen(app.get('80')); // not 'app.listen'
And inside your archive HTML/EJS
or another you want, add:
<script src="/socket.io/socket.io.js"></script>
Check if works with Console
(Chrome/ Mozilla, etc).
In my example I use Chrome (Ctrl + shift + I):
Upvotes: 0
Reputation: 13675
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!
Upvotes: 4
Reputation: 6336
After installing node 0.8.1 I had the same problem. I just deleted the node_modules map in my project folder and reinstalled express/socket.io. After that it worked fine again with the code in your question.
Upvotes: 1
Reputation: 1356
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
Upvotes: 95
Reputation: 1090
Maybe this could help you, on my Ubuntu 11.10 I haven't properly set NODE_PATH
variable,
If you are on linux/mac try add line below to your .bashrc/.zshrc file.
export NODE_PATH=/usr/lib/node_modules:$NODE_PATH
Upvotes: 0