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