2017-02-25 104 views
1

我有一个VPS为我的游戏运行服务器。我使用node.jssocket.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', '*:*'); 

回答

0

这就是我一直在做的事情。我用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(); 
+0

客户在另一个域和差异服务器。我的VPS只运行Node.js应用程序,我的网站将连接到它。 –

+0

@OmegaP可以尝试将端口更改为'80'吗?我可以模拟与端口'5000'相同的问题,但是如果我将其更改为'80',则它可以工作。 –

+0

@OmegaP我有一个使用Heroku服务的项目。它也使用端口5000和那里,我有'server.listen(process.env.PORT || 5000);'在服务器上和'socket = io();'在客户端上。我没有在那里指定IP。你可以尝试一样吗? –