Как использовать 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
Ответы
Ответ 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)