【问题标题】:Heroku node server deployment not responding to clientHeroku 节点服务器部署未响应客户端
【发布时间】:2020-08-22 13:33:14
【问题描述】:

我正在尝试将一个非常简单的节点服务器部署到 heroku,如下所示:

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
console.log("Server started")

wss.on('connection', function connection(ws) {
    console.log('Client connected');
     setInterval(() => {
        wss.clients.forEach((client) => {
            if (client.readyState === WebSocket.OPEN) {
                var testObject = {
                    message: new Date().toTimeString()
                }
                client.send(JSON.stringify(testObject));
            }
        });
    }, 5000);
    ws.on('close', () => console.log('Client disconnected'));
});

包.json

"engines": {
    "node": "12.x"
  },
  "scripts": {
    "server": "node server.js"
  },

如果我在本地启动它,我的客户会打印出时间戳。 我现在将它部署到heroku。日志显示:

2020-05-07T09:30:30.429508+00:00 app[web.1]: > websocket-node@1.0.0 开始 /app 2020-05-07T09:30:30.429509+00:00 app[web.1]: > 节点 server.js 2020-05-07T09:30:30.512985+00:00 app[web.1]:服务器已启动

然后我更改我的客户端配置

// const subject = webSocket('ws://localhost:8080');
const subject = webSocket('ws://whateverwhatever.herokuapp.com:8080');

但我没有收到来自服务器的答复。我错过了什么?

【问题讨论】:

  • 您需要绑定到process.env.PORT,而不是8080。 Heroku 为您提供了一个需要绑定的随机端口。其次,ws URL 末尾不包含端口号。由DNS自动翻译成ip地址+端口。

标签: node.js heroku websocket


【解决方案1】:

感谢@Tin Nguyen 更改了三行 - 花了 30 秒。

客户端代码:

const subject = webSocket('ws://fierce-dawn-73363.herokuapp.com');

服务器代码:

const PORT = process.env.PORT || 3000;
const wss = new WebSocket.Server({ port: PORT });

【讨论】:

    猜你喜欢
    • 2016-11-19
    • 1970-01-01
    • 2022-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 2018-02-10
    • 2022-06-21
    相关资源
    最近更新 更多