让套接字和http服务器侦听相同的端口

H. *_*lyn 1 sockets httpserver node.js socket.io

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

我已经尝试了一些方法,但是遇到了一个问题:如何创建一个套接字服务器和一个HTTP服务器,以使用Node.JS侦听同一端口?我在下面运行代码,但有这个异常:

错误:听 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');
});
Run Code Online (Sandbox Code Playgroud)

提前致谢

rob*_*lep 5

您似乎想要类似以下内容:

const port = 8080;

let app    = require('express')();
let server = app.listen(port);
let io     = require('socket.io')(server);
Run Code Online (Sandbox Code Playgroud)

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