首页 > 解决方案 > 无法使用 JavaScript 客户端连接到 Heroku 上的 WebSocket 服务器

问题描述

好的,所以我在 node.js 中使用“ws”模块编写了一个 websocket 服务器,下面是我的代码。

const WebSocketServer = require('ws');

const wss = new WebSocketServer.Server({ port: 8080 })
 

wss.on("connection", ws => {
    console.log("new client connected");
    ws.on("message", data => {
        wss.clients.forEach(function each(client) {
            client.send(data);
            console.log('Sent: ' + data);
        });
    });
    ws.on("close", () => {
        console.log("the client has disconnected");
    });
    ws.onerror = function () {
        console.log("Some Error occurred")
    }
});
console.log("The WebSocket server is running on port 8080");

服务器运行良好,我可以使用new WebSocket("ws://localhost:8080");本地连接到它。问题是当我尝试在我的 Heroku 应用程序上托管它时,WebSocket对象检测到服务器很好,并且控制台中没有错误。
问题是WebSocket对象无法连接到服务器。当我在控制台中检查对象时,它会将套接字的 ReadyState 属性显示为“0”(仍处于连接状态)大约五分钟。然后,套接字会自行关闭(ReadyState 3,已关闭)。对我来说最奇怪的是它没有抛出任何错误。

有人可以解释一下到底发生了什么,我有点想弄清楚这一点。
非常感谢所有帮助。

谢谢,
阿迪

标签: javascriptnode.jsherokuwebsocket

解决方案


推荐阅读