gpt4 book ai didi

node.js - Socket.io 适用于 localhost 但不适用于 Heroku 服务器

转载 作者:搜寻专家 更新时间:2023-10-31 22:39:47 24 4
gpt4 key购买 nike

我目前正在尝试使用 socket.io 和 node.js 服务器与 Unity 脚本进行通信。我已将所有东西连接起来并使用本地主机,但由于某种原因,当我将它移植到我的 Heroku 服务器时,它无法连接。我假设它可能与网址有关?我是 socket.io 的新手,所以我们将不胜感激。

我的 node.js 服务器:

var express = require('express');
var app = express();
var expressWs = require('express-ws')(app);
var path = require('path');

var server = require('http').createServer(app);
var io = require('socket.io')(server);

io.on('connection', function(socket) {
socket.on('beep', function(){
socket.emit("speed", {data: 5});
console.log('beep recieved');
});

socket.on('change-speed', function(data) {
console.log('change speed recieved: ' + data);
socket.emit("speed", {newSpeed: data});
});

socket.on('ios-connection', function(data) {
console.log('ios connection with message: ' + data);
});

});

app.set('port', (process.env.PORT || 5000));

app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});

我的连接网址:

ws://<heroku app name>.herokuapp.com:5000/socket.io/?EIO=4&transport=websocket

最佳答案

问题几乎可以肯定是端口号不正确。

在您的应用程序中,您正在检查 process.env.PORT,如果它设置,则默认为 5000。

然而,在您的 ws URL 中,您似乎总是期望您的应用程序在端口 5000 上监听。

您可以通过在项目的根目录中运行以下命令来检查应用程序的配置设置:

heroku 运行 printenv

这将打印配置变量列表,包括当前设置的 PORT 值,例如:

PORT=9352

构建 ws URL 时应使用此端口,例如:

ws://your-app.herokuapp.com:9352/socket.io/?EIO=4&transport=websocket

关于node.js - Socket.io 适用于 localhost 但不适用于 Heroku 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34498819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com