node.js - Socket.io未在Heroku上连接

标签 node.js reactjs sockets socket.io

我在NodeJS后端中使用Socket.io。但是,套接字不起作用。例如,一个人应该收到一个链接,然后使用相同的代码将其发送到所有其他房间,但是该代码未执行。在我的heroku日志中,我没有收到任何错误,但是当我检查元素时,我得到的页面
polling-xhr.js:268 GET https://localhost:5000/socket.io/?EIO = 3&transport = polling&t = NDADDNH net::ERR_CONNECTION_REFUSED

无法加载资源:net::ERR_CONNECTION_REFUSED
我从这个论坛上调查了类似的问题,并进行了一些更改,但没有一个解决了该问题。还有很多帖子都回答了关于ws的解决方案,而我对此一点都不了解:/
从我读到的内容来看,问题可能出在我的端口上?我遵循了其中的一些,但是仍然发生相同的错误。
Socket.io:

/***BACKEND***/
const express = require('express');
const path = require('path');

const app = express();

let rooms = [];

/***SERVER***/
const port = process.env.PORT || 5000;
server = app.listen(port, function(){
    console.log('App is listening on port ' + port)
});


/***SOCKET.IO***/
const socket = require('socket.io');
io = socket(server);

io.on('connection', (socket) => {
 //bunch of functionality
}
然后我在我的客户中使用
this.socket = io('localhost:5000');

//one of the functions
        this.syncQueue = () => {
            this.socket.emit('SYNC_QUEUE', {
                activeRoom: this.props.getRoom()
            });
        }

        this.socket.on('RECEIVE_QUEUE', newQueue => {
            props.onAddToQueue(newQueue);
        });
仅供引用一切都可以在本地主机上

最佳答案

Localhost将无法在服务器上运行,如果您使用的是默认 namespace ,则无需指定URL。所以试试这个,this.socket = io()

关于node.js - Socket.io未在Heroku上连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62885098/

相关文章:

javascript - Node.js/Mongoose/lodash - 服务器响应 : User Validation Failed: path `foo` is required

reactjs - 在 jasmine 助手中调用 Enzyme.configure

javascript - React-Router-我可以在React Router的浏览器历史记录中获取下一个路径字符串,还是检查是否存在转发?

javascript - 简单的 node.js 服务器没有错误处理失败的请求

javascript - Node.JS:使用 Express 创建新页面

node.js - 安装 yomen 时疑难解答。谁能帮我解决这个问题..!

javascript - 在 React Hooks 中使用 useEffect 更新对象数组

java - Android套接字客户端 - 无法发送消息

c - 套接字编程-如何让服务器只存储数字

sockets - 了解WebSockets