socket.io - can't get it to work, having 404's on some kind of polling call
It looks like Socket.IO can't intercept requests starting with /socket.io/
. This is because in your case the listener is app
-- an Express handler. You have to make http
be listener, so that Socket.IO will have access to request handling.
Try to replace
app.set( "ipaddr", "127.0.0.1" );app.set( "port", 8080 );
with
http.listen(8080, "127.0.0.1");
See docs for details: http://socket.io/docs/#using-with-express-3/4
In my case, I created my app with the Express application generator. To solve this problem, instead of edit the app.js file on the root folder of the project, I edited the file bin/www on the line after the server is defined:
/** * Create HTTP server. */var server = http.createServer(app);var io = require('socket.io')(server); // Add this here
Update
I found a better way here Express Generator and Socket.io
Just for check that is your server or just client problem you could use this web: websocket-echo, if this client connect right to your server (the first form client is usefull if your server is online, if is on your host, cuoting from websocket.org...
Using a text editor, copy the following code and save it as websocket.html somewhere on your hard drive
Code: websocket-test
The only thing different from mine that i could observe is the io client source: <script src="/socket.io/socket.io.js"></script>
on your client side.
On your server you should try this way:
var express = require('express'), app = express(),http = require('http'),server = http.createServer(app),io = require('socket.io').listen(server),exec = require('child_process').exec,util = require('util');//serve our codeapp.use(express.static('public'));app.use(express.json());app.use(express.urlencoded());//listening on connectionsio.on('connection', function (socket) { console.log('client connected!'); }server.listen(8080);
Note that this way works fine with this dependencies:I recommend you add this code below to your package.json file:
"dependencies": { "express": "3.x.x", "socket.io": "*", "util": "*" }
cheers!