【问题标题】:Socket.io: net::ERR_CONNECTION_CLOSEDSocket.io:net::ERR_CONNECTION_CLOSED
【发布时间】:2017-06-08 12:24:10
【问题描述】:

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

如果我将其设置为不同的端口,我会收到“net::ERR_CONNECTION_CLOSED”错误。

我该如何解决这个问题?

【问题讨论】:

    标签: express socket.io


    【解决方案1】:

    您可能正在创建(显式或隐式)两个独立的 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。但是,我没有看到这样做的好处,它更容易在同一个端口上运行它们。
    猜你喜欢
    • 1970-01-01
    • 2018-09-12
    • 2016-09-22
    • 2019-08-08
    • 2017-06-09
    • 1970-01-01
    • 2020-11-03
    • 2021-09-12
    • 2017-08-23
    相关资源
    最近更新 更多