How to use ExpressJS and Socket.io on a same port?
20,928
Solution 1
It's described on the socket.io github page (as @Golo stated in your comment):
var app = express()
, server = require('http').createServer(app)
, io = io.listen(server);
server.listen(80);
This works, I have it running.
Probably what Golo have forgotten is to change the listen from app.listen(80)
to server.listen(80)
. I've struggled with this too until I realised my stupid mistake.
Solution 2
var app = require('express')()
, server = require('http').createServer(app)
, io = require('socket.io').listen(server)
app.start = app.listen = function(){
return server.listen.apply(server, arguments)
}
app.start(8080)
Comments
-
NiLL over 3 years
In the third version of ExpressJS express.createServer() changed to express() this changes makes difficult to bind socket.io on a same port. Maybe somebody could find robust decision.
Now, this doesn't work:
var express = require('express') , app = express.createServer() , io = require('socket.io').listen(app);
My current workflow: https://gist.github.com/3596852