【问题标题】:NodeJS, React on Heroku, Socket.io gives errorNodeJS,Heroku 上的反应,Socket.io 给出错误
【发布时间】:2017-12-11 04:46:29
【问题描述】:

请帮忙!我正在用 Node/Express 和 Heroku 上的 React 创建一个网站。 Server.js 在客户端提供一个 expresshandlebar 模板,渲染 App.js

到目前为止一切正常,直到我尝试实现 Socket.IO。 Socket.IO 在 localhost 上完美运行,但在 Heroku 上出现错误:

VM63:35 WebSocket 连接到“ws://mysite:8080/socket.io-client/?EIO=3&transport=websocket”失败:WebSocket 握手期间出错:net::ERR_CONNECTION_RESET

以下是代码的相关部分:

Server.js

var express = require('express'),
var port = process.env.PORT || 8080;
var httpServer = require('http').createServer(app);
httpServer.listen(port)
io.on('connection', function (socket) {
console.log('Connection started');});

App.js

var io = require('socket.io-client');
var new_socket = io.connect();

我已经阅读了许多网站,并尝试了许多替代方案,例如: 1) 在客户端和服务器 socket.io 'path' 和 'transsports' 上设置

path: '/socket.io-client'
transports: ['websocket']

2) 按照 Heroku 的推荐尝试 WebSockets。这会引发另一个错误“错误 503”

【问题讨论】:

    标签: node.js reactjs heroku socket.io


    【解决方案1】:
    this.io = socket.connect(yourpath, {
      transports: ['websocket'],
      upgrade: false,
    });
    

    首先,您需要准确连接到套接字服务器。你能试试上面的代码吗,我正在用它来做我的项目

    【讨论】:

    • 哇,你真是个天才!这成功了!没有更多错误,我的控制台正在记录服务器和客户端发送的消息。现在,您能解释一下这是如何工作的吗?
    • 默认情况下,首先建立一个长轮询连接,然后升级到“更好”的传输(如 WebSocket)。所以我们的配置会强制他们跳过使用长轮询
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2023-03-23
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2018-01-25
    • 2022-06-30
    相关资源
    最近更新 更多