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

How to run NodeJs SocketIO on server (Centos 7)

我使用 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);
});

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

检查此 link 以了解有关如何在 linux 上转发的更多信息:https://linuxacademy.com/guide/11630-internal-port-forwarding-on-linux-using-the-firewall/

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

https://www.noip.com/support/knowledgebase/general-port-forwarding-guide/

但是,我不建议您在自己的机器上托管。我 建议你使用Heroku,你可以op in他们的免费服务器,不需要付费。

关于 heroku 和 NodeJS 的更多信息:https://linuxacademy.com/guide/11630-internal-port-forwarding-on-linux-using-the-firewall/

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

2) 在启动 node js 应用程序之前,你应该必须在 centOs 上打开端口

3) 你应该用域名或ip地址测试你

根据你的评论你得到了连接超时,你的意思是节点 js 服务器试图连接端口 3000 但节点无法连接并且它抛出连接超时错误

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