【问题标题】:WebSocket on Heroku ERR_CONNECTION_REFUSEDHeroku ERR_CONNECTION_REFUSED 上的 WebSocket
【发布时间】:2018-05-20 00:26:36
【问题描述】:

我正在尝试使用 WebSockets 在 Heroku 上运行节点 js 应用程序。但是,我无法解决此错误(如 Chrome 浏览器的控制台所示)

到 'wss://myappname.herokuapp.com:27225/' 的 WebSocket 连接失败:连接建立错误:net::ERR_CONNECTION_REFUSED

因为 Heroku 在 HTTPS 上运行,所以我使用的是 'wss'。

我的客户端代码是:

$.get("https://myappname.herokuapp.com/port",function(data){
    port = data;
    console.log(data);
    host = 'wss://myappname.herokuapp.com:' + port + '/';
    ws = new WebSocket(host);
  });

我的服务器端代码是:

var WebSocketServer = require("ws").Server
var fs = require('fs');
var express = require('express'); 
var app = express();
var http = require('http');
var port = process.env.PORT || 5000;
var request = require('request');

var server = http.createServer(app);
var serverOnPort = server.listen(port);

console.log("Server listening on port ",port);

var wss = new WebSocketServer({server: serverOnPort});
console.log("websocket server created");

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: javascript node.js heroku websocket


    【解决方案1】:

    所以看起来我试图过度使用端口号。只需将主机用作wss://myappname.herokuapp.com/ 即可。

    【讨论】:

    • 我遇到了您遇到的确切问题,您是如何解决的?我不断收到 ERR_CONNECTION_REFUSED 错误。我的代码和你的几乎一模一样..
    • @DennisSmink 您是否在 URL 末尾使用端口号?当我从我的代码中删除它时,它按预期工作。
    • 我删除了端口,但似乎没有用。最终我解决了,我运行的是 2 个节点而不是 1 个,heroku 不允许这样做。
    • 运行 2 个节点是什么意思?
    • 这很奇怪,为什么我们在使用这个库时不应该提及端口号,不过还是谢谢,你为我节省了很多时间!
    【解决方案2】:

    我也发现了这个问题。 Heroku 似乎会自动路由端口号。它允许在 url 中指定端口号。在我的 chrome 中,它显示 ERR_CONNECTION_RESET。 XMLHttpRequest 也会发生这种情况。当您使用 localhost 或其他不是 Heroku 的服务器进行测试时,仍然需要端口号。

    【讨论】:

    • 请避免发布诸如“我也是”或“我也面临同样的问题”之类的答案,而不提供该问题的解决方案。
    猜你喜欢
    • 2018-01-05
    • 2019-11-17
    • 2017-09-10
    • 1970-01-01
    • 2022-09-24
    • 2020-10-24
    • 2019-05-18
    • 2018-06-07
    • 2017-04-30
    相关资源
    最近更新 更多