31

在 ExpressJS 的第三个版本中,express.createServer()更改为express(),此更改使得在同一端口上绑定 socket.io 变得困难。也许有人可以找到稳健的决定。

现在,这不起作用:

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

我目前的工作流程:https ://gist.github.com/3596852

4

2 回答 2

54

它在socket.io github页面上进行了描述(正如@Golo在您的评论中所述):

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

server.listen(80);

这行得通,我让它运行。

可能 Golo 忘记的是将 listen 从 更改app.listen(80)server.listen(80). 我也一直在为此苦苦挣扎,直到我意识到我的愚蠢错误。

于 2012-09-02T15:36:30.047 回答
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)
于 2012-09-02T14:41:18.327 回答