Express Socket.io:net::错误\u连接\u已关闭

Express Socket.io:net::错误\u连接\u已关闭,express,socket.io,Express,Socket.io,我正试图在我的网站上设置socket.io,但服务器记录了一个错误,表示该端口已在使用中(我将其设置为与服务器相同)。我在用快车 如果将其设置为其他端口,则会出现“net::ERR\u CONNECTION\u CLOSED”错误 如何修复此问题?您可能正在创建(显式或隐式)两个单独的HTTP服务器实例,它们应在同一端口上侦听,因此第二个实例将抛出错误,因为第一个实例已占用该端口 相反,您可以在Express和socket.io之间共享同一个HTTP服务器,因此只有一个HTTP服务器同时处理这两

我正试图在我的网站上设置socket.io,但服务器记录了一个错误,表示该端口已在使用中(我将其设置为与服务器相同)。我在用快车

如果将其设置为其他端口,则会出现“net::ERR\u CONNECTION\u CLOSED”错误

如何修复此问题?

您可能正在创建(显式或隐式)两个单独的HTTP服务器实例,它们应在同一端口上侦听,因此第二个实例将抛出错误,因为第一个实例已占用该端口

相反,您可以在Express和
socket.io
之间共享同一个HTTP服务器,因此只有一个HTTP服务器同时处理这两个问题:

const express  = require('express');
const app      = express();
const server   = app.listen(3000); // or whatever port you want
const io       = require('socket.io')(server);

app.listen(…)
返回Express将为您创建的HTTP服务器实例。通过将该实例传递到其构造函数中(由
require('socket.io')
返回),您可以将该实例重新用于
socket.io

谢谢。socket.io能否侦听与服务器正在侦听的端口不同的端口?是的,您可以使用
require('socket.io')(3001)
例如,这样
socket.io
服务器将在3001而不是3000上侦听。但是,我不认为这样做有什么好处,在同一个端口上运行它们要容易得多。