让socket和http服务器监听同一个端口
Let socket and http server listen to same port
我做一个网站,它必须与服务器实时通信。对于实时,我的意思是如果用户对某个主题进行投票,所有连接的客户端都必须看到新的平均投票数。
我已经尝试了一些,但我遇到了这个问题:我如何创建一个套接字服务器和一个 HTTP 服务器来侦听与 [=23= 相同的端口]?我在下面的 运行 代码中遇到了这个异常:
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
服务器在同一端口上的方式。
我做一个网站,它必须与服务器实时通信。对于实时,我的意思是如果用户对某个主题进行投票,所有连接的客户端都必须看到新的平均投票数。
我已经尝试了一些,但我遇到了这个问题:我如何创建一个套接字服务器和一个 HTTP 服务器来侦听与 [=23= 相同的端口]?我在下面的 运行 代码中遇到了这个异常:
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
服务器在同一端口上的方式。