SocketIO在Heroku环境中不起作用[在Localhost中工作]

时间:2019-02-27 02:54:40

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

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

我已经检查了Heroku中的日志,但是没有任何内容。但是奇怪的是,它在本地主机上运行,​​但在Heroku环境下却无法运行。我认为PORT设置存在一些问题。

[服务器端代码]

/* 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 Variable以在生产环境中使用它。

[端口设置]

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 App,我认为它应该是另一种解决方案。我已经尝试过heroku文档,但是它不起作用

1 个答案:

答案 0 :(得分:0)

在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);}) ;