【问题标题】:How to use ExpressJS and Socket.io on a same port?如何在同一个端口上使用 ExpressJS 和 Socket.io?
【发布时间】:2012-08-27 10:56:18
【问题描述】:

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

现在,这不起作用:

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

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

【问题讨论】:

标签: javascript node.js express socket.io


【解决方案1】:

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

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

server.listen(80);

这行得通,我正在运行它。

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

【讨论】:

  • 是的,将 app.listen 更改为 server.listen 也为我修复了它!
  • 这个解决方案仍然适用于当前的 Express。检查this这个活生生的例子。
  • 这在 express 中对我有用:4.16.3,socket.io:2.1.1。
  • 哦,你是救生员。谢谢。
【解决方案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)

【讨论】:

猜你喜欢
  • 2021-02-28
  • 2015-04-28
  • 2015-01-07
  • 2017-06-03
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 2013-09-19
相关资源
最近更新 更多