为什么我的应用程序不会在Heroku上建立websocket连接?

Cap*_*ate 8 heroku websocket node.js

我正在尝试在heroku上部署我的nodejs应用程序.我无法建立websocket连接.我已经阅读了我能找到的所有内容,尝试了每一个例子,但似乎没有一个适合我.

当我尝试打开我的页面"heroku open"时,nodejs正确地给了我html文件.然而,websocket'ws'连接永远不会建立.

我的server.js有以下配置:

var pport = process.env.PORT || 5000;
server.listen(pport, function(err) {
    if(!err) { console.log("Listening on port " + pport); }
});
Run Code Online (Sandbox Code Playgroud)

旁注 当我检查"Heroku的日志",我发现我的应用程序运行的端口是随机5位数字.(如28896,53365等)它实际上从未在下半场运行|| 5000.

但问题是,为了让我的game.html文件建立一个websocket连接,它需要知道什么端口.我尝试了以下客户端配置,没有一个工作:

1)

var host = location.origin.replace(/^http/, 'ws');
this.connection = new WebSocket(host);
Run Code Online (Sandbox Code Playgroud)

2)

var host = location.origin.replace(/^http/, 'ws');
host = host + ":5000";
this.connection = new WebSocket(host);
Run Code Online (Sandbox Code Playgroud)

3)

this.connection = new WebSocket('ws://infinite-earth-7708.herokuapp.com/');
Run Code Online (Sandbox Code Playgroud)

我也完成了他们网站所说的内容,并在部署我的应用后尝试使用以下内容:

heroku config:add NODE_ENV=production
Run Code Online (Sandbox Code Playgroud)

请指教

Cap*_*ate 10

好吧我明白了.这是你应该知道的:

  • 我没有从原始帖子更改我的服务器配置.

我的客户端配置如下所示:

var host = location.origin.replace(/^http/, 'ws');
this.connection = new WebSocket(host);
Run Code Online (Sandbox Code Playgroud)

但这里是踢球者.在终端上我使用了以下命令:

heroku labs:enable websockets
Run Code Online (Sandbox Code Playgroud)

瞧,它有效!我希望这可以帮助别人.

  • Heroku 更新了他们的堆栈。您不再需要手动启用 websocket。这个答案现在已经过时了。 (3认同)