如何在服务器上运行NodeJs SocketIO(Centos 7)

时间:2020-02-28 07:07:45

标签: node.js socket.io centos centos7

我使用nodejs套接字io创建应用。它可以在本地主机(端口:3000)上正常工作。但是,当我将其部署到服务器时,我可以在3000端口上运行我的应用程序,但客户端会抛出超时。我该怎么解决?

var fs = require('fs');

var https = require('https');
var options = {
  key: fs.readFileSync('ssl.my-key.key'),
  cert: fs.readFileSync('ssl.my-cert.crt')
};
var server = https.createServer(options);
var io  = require('socket.io').listen(server);
var port = 3000;

const database = require('./Database');

io.on('connection', (socket) => {

  socket.on('message', async (msg) => {
    // I do some action here.
  });

  socket.on('disconnect', (msg) => {
    // some action in here too
  });

});

server.listen(port, () => {
  console.log('listening on *:' + port);
});

2 个答案:

答案 0 :(得分:1)

似乎您的问题与端口转发有关。 为了公开访问您的服务器,它需要正确转发所有端口。本地和在路由器上。

检查此链接以了解有关如何在Linux上进行端口转发的更多信息:demo

这是为了了解有关路由器端口转发的更多信息,但这实际上取决于您的路由器。

https://linuxacademy.com/guide/11630-internal-port-forwarding-on-linux-using-the-firewall/

但是,我建议您不要在自己的计算机上托管主机。一世 建议您使用Heroku,您可以选择使用其免费服务器,而无需付费。

有关heroku和NodeJS的更多信息:https://www.noip.com/support/knowledgebase/general-port-forwarding-guide/

答案 1 :(得分:1)

让我们调试您的node js应用。 1)在数据库连接http.createserver上添加一些日志,还必须在其中检查是否成功然后捕获异常

2)在启动节点js应用之前,您必须在centOs上打开端口

3)您应该使用域名或IP地址对您进行测试

根据您的评论,您得到了连接超时,这表示节点js服务器试图与端口3000连接,但是节点无法连接,并且连接超时引发错误

还发送您的主索引文件的示例代码,以便我们调查您的问题 谢谢。