我使用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);
});
似乎您的问题与端口转发有关。为了公开访问您的服务器,它需要正确转发所有端口。在本地和路由器上。
检查此链接以了解有关如何在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,您可以选择使用其免费服务器,无需支付费用。
有关heroku和NodeJS的更多信息:https://linuxacademy.com/guide/11630-internal-port-forwarding-on-linux-using-the-firewall/
让我们调试您的node js应用。1)在数据库连接http.createserver上添加一些日志,还必须在其中检查是否成功,然后捕获异常]]
2)在启动节点js应用之前,您必须在centOs上打开端口]
3)您应该使用域名或IP地址对您进行测试
根据您的评论,您获得了连接超时,这意味着节点js服务器试图与端口3000连接,但是节点无法连接,并且连接超时引发错误
还发送您的主索引文件的示例代码,以便我们调查您的问题谢谢。