2017-02-23 77 views
-1

我有一個本地工作的node.js應用程序(帶有websockets)。我ssh到我的遠程服務器,並運行node server.js(我在本地做同樣的事情)。我得到我的日誌文本「連接並監聽(端口)3000」。nodejs服務器不處理遠程部署的請求

在本地運行時,我去https://localhost:3000。對於遠程服務器,我似乎無法找到節點服務器處理請求的位置。我試過https://mydomainroot.com:3000https://mydomainroot/folder/containing/serverjs,以及該主題上的一些細微變化。

這些請求似乎都沒有被我的節點服務器處理(它應該記錄類似「收到的GET請求到/ main」)。套接字也沒有響應。

我正在使用一個小的橙色託管,如果這件事。

我可以直接導航到main.html,但它不能解決websocket問題。

我最喜歡的預感與路由有關,但我已經沒有想到接下來要看的地方了。幫幫我?

代碼:

var path = require('path'); 
var express = require('express'); 
var app = express(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 


app.use(express.static(path.join(__dirname, 'public'))); 

app.get('/', function(req, res){ 
    console.log("Received request for /"); 
    res.sendFile('main.html', {root: __dirname + '/public'}); 
}); 

io.on('connection', function(socket) { 
    console.log("received socket connection"); 
    users.push(socket); 

    socket.on('disconnect', function() { 
    if (socket.player) 
     var data = "updates" 

     io.emit(data); 
    }); 

    socket.on('move', function(move) { 
     //send move to everyone except sender 
     io.emit("updates"); 
    } 

    }); 
}); // socket connection ends 

function start() { 
    http.listen(3000, function() { 
    console.log("connected and listening on 3000"); 
    start(); 

    }) 
}; 

function start() { 

    // this emits the game state to every connected socket 
    io.emit('Initial state'); 

    // this triggers end of turn 
    setTimeout(nextTick, 5000); 

} 

function nextTick() { 
    io.emit('updates'); 
    start(); 
} 

start(); 
+1

每[這個小橙子託管網站上的示例代碼](https://help.asmallorange.com/index.php?/Knowledgebase/Article/View/286/1/getting-started-with-nodejs-on-看起來你可以同時運行nodejs和監聽端口3000.我猜你的域名沒有正確地連接到服務器運行的IP地址。您可以先查看您的nodejs服務器的IP地址和您的域的IP地址,然後查看它們是否相同。 – jfriend00

+0

您是否曾嘗試在遠程服務器上運行'curl localhost:3000'並查看它是否返回任何內容? –

+0

你去哪兒了?我們試圖幫助你,你似乎已經消失了。 – jfriend00

回答

1

既然你硬編碼到3000端口,你應該檢查你的主機提供商實際上允許該端口進行訪問。您可能必須配置您的防火牆以使該端口公開可用。