Как использовать ExpressJS и Socket.io на одном и том же порту? - программирование

Как использовать ExpressJS и Socket.io на одном и том же порту?

В третьей версии ExpressJS express.createServer() изменено на выражение(), это изменение затрудняет привязку socket.io на одном и том же порту. Может быть, кто-то может найти надежное решение.

Теперь это не работает:

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

Мой текущий рабочий процесс: https://gist.github.com/3596852

4b9b3361

Ответ 1

Он описан на странице socket.io github (как указано @Golo в вашем комментарии):

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

server.listen(80);

Это работает, я работаю.

Возможно, то, о чем Забыл Голо, - это изменить прослушивание от app.listen(80) до server.listen(80). Я тоже боролся с этим, пока не осознал свою тупую ошибку.

Ответ 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)