Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use ExpressJS and Socket.io on a same port?

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

like image 667
NiLL Avatar asked Sep 02 '12 10:09

NiLL


People also ask

Can a Socket.IO and Express on same port?

On Scalingo, your application must listen to the port defined in the PORT environment variable dynamically defined by the platform.

What port does Socket.IO use?

We make the http server listen on port 3000.

What port should I use for Express server?

I know that Express apps default to port 3000.


2 Answers

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.

like image 168
Cristi Mihai Avatar answered Sep 22 '22 20:09

Cristi Mihai


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) 
like image 27
supernova Avatar answered Sep 22 '22 20:09

supernova