node.js - 让socket和http服务器监听同一个端口

标签 node.js sockets socket.io httpserver

我制作了一个网站,它必须与服务器进行实时通信。实时的意思是,如果用户对某个主题进行投票,所有连接的客户端都必须看到新的平均投票数。

我尝试过一些方法,但遇到了这个问题:如何创建一个套接字服务器和一个 HTTP 服务器来使用 Node.JS 监听同一端口?如果我运行下面的代码,则会出现此异常:

Error: listen EADDRINUSE

这是我的服务器代码:

let port = 8080;

const httpServer = require('http'),
      app = require('express')(),
      socketServer = http.Server(app),
      io = require('socket.io')(httpServer);

httpServer.createServer(function (req, res) {
    console.log('http server created on 8080');
}).listen(port);

socketServer.listen(port, function(){
    console.log('listening on 8080');
});

提前致谢

最佳答案

看起来您想要类似的东西:

const port = 8080;

let app    = require('express')();
let server = app.listen(port);
let io     = require('socket.io')(server);

这会将 Express 应用程序和 socket.io 服务器附加到同一 HTTP 服务器(由 app.listen() 返回)。这就是您在同一端口上运行应用程序和 socket.io 服务器的方式。

关于node.js - 让socket和http服务器监听同一个端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40628066/

相关文章:

javascript - 模型的 findOne 方法上的 Mongoose TypeError

Java Server 关闭后向客户端发送消息

javascript - 在 socket.io 上关闭套接字服务器端?

node.js - 无缓冲地读取子进程的标准输出

node.js + socket.io - 重复的 websocket 写入?

node.js - Node/Mocha 测试超时

node.js - 如何省略/设置 xmlns :xsd attribute from soap parameter?

sockets - 我们可以在收到应用程序级别的确认后重置 TCP 连接吗?

python - 通过http python发送图像

python - 从socketIo python发出事件