2017-02-25 106 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。你可以嘗試一樣嗎? –