【问题标题】:SocketIO is not working in Heroku Environment [Works in Localhost]SocketIO 在 Heroku 环境中不工作 [在 Localhost 中工作]
【发布时间】:2019-02-27 14:55:58
【问题描述】:

我用 NodeJS 和 SocketIO 开发了聊天程序。然后我部署到 Heroku Server,发现 SocketIO 在 Heroku 中不起作用。

我已经检查了 Heroku 的日志,但是什么也没有。但奇怪的是它在 localhost 中工作,而不是在 Heroku 环境中。我认为端口设置有问题。

[服务器端代码]

/* Socket IO Settings */
const server = require('http').Server(express);
const io = require('socket.io')(server);
let port = process.env.PORT || 3001;
server.listen(port, function () {
  console.log(`SocketIO Listening on port : ${port}`)
});

[客户端代码]

/* Chat Functions */
var socket = io.connect(`${window.location.hostname}:3001`);

第一次我只使用var socket = io.connect('http://localhost:3001'); 代码,它在Localhost Env 中运行良好。但是在我部署到 heroku 之后,我添加了 Heroku 变量以在生产中使用它。

[端口设置]

NODEJS Server : 3000
SOCKET IO : 3001
Heroku process.env.PORT : 3001 (But When I check Heroku console it changes everytime when I reload the dynos and in Logs said me that the ports are already in use.)

我已经阅读了 Heroku 文档,但似乎我使用 Express Generator 创建了 NodeJS 应用程序,我认为它应该是不同的解决方案。我已经尝试过 heroku 文档,但它不起作用

【问题讨论】:

标签: javascript node.js express heroku socket.io


【解决方案1】:

在 server.listen 函数中设置你的服务器 ip

var ip='127.0.0.1';
var port ='3001' ;
server.listen(ip,port, function() {console.log('server stsrt in ip: ' +ip+' and port: ' +port);}) ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2021-09-12
    相关资源
    最近更新 更多