如何设置服务器运行Node.js?
问题描述:
我有一个VPS为我的游戏运行服务器。我使用node.js
和socket.io
。我发现了一些教程配置我my-app-name.service
文件是这样的:如何设置服务器运行Node.js?
[Service]
ExecStart=/usr/bin/node /usr/games/nodeapp/app.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=my-app-name
User=hnp
Group=hnp
Environment=NODE_ENV=production PORT=5000
[Install]
WantedBy=multi-user.target
但是,当我连接到服务器从mydomain.com通过socket.io:
io('http://<my_server_ip>:5000')
我得到错误:
GET http://<my_server_ip>/socket.io/?EIO=3&transport=polling&t=LfqMeQU net::ERR_CONNECTION_TIMED_OUT
我的app.js
var http = require('http');
var socketIO = require('socket.io');
var port = process.env.PORT || 5000;
var ip = process.env.IP || 'localhost';
server = http.createServer().listen(port, ip, function() {
console.log('Server running at %s:%s!', ip, port);
});
var io = socketIO.listen(server);
io.set('match origin protocol', true);
io.set('origins', '*:*');
答
这就是我一直在做的事情。我用Express.js,虽然:
var express = require("express");
var app = express();
app.use(express.static(__dirname + "/"));
var http = require("http");
var server = http.createServer(app);
io = require("socket.io")(server);
server.listen(process.env.PORT || 80, "YOUR_IP");
客户:
var socket = io();
客户在另一个域和差异服务器。我的VPS只运行Node.js应用程序,我的网站将连接到它。 –
@OmegaP可以尝试将端口更改为'80'吗?我可以模拟与端口'5000'相同的问题,但是如果我将其更改为'80',则它可以工作。 –
@OmegaP我有一个使用Heroku服务的项目。它也使用端口5000和那里,我有'server.listen(process.env.PORT || 5000);'在服务器上和'socket = io();'在客户端上。我没有在那里指定IP。你可以尝试一样吗? –