我正在尝试在我的网站上设置socket.io但是服务器会记录一个错误,说该端口已经在使用(我将其设置为与我的服务器相同)。我正在使用Express。
如果我将其设置为其他端口,则会出现'net :: ERR_CONNECTION_CLOSED'错误。
我该如何解决这个问题?
答案 0 :(得分:2)
您可能正在创建(显式或隐式)应该侦听同一端口的两个单独的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服务器实例。您可以通过将该实例传递给它的构造函数(由socket.io
返回)来重用require('socket.io')
的实例。