2017-04-23 54 views
3

嗯,我希望這個問題不是愚蠢的或重複的。我保證我已經研究和測試了很多。無法連接到我的VPS上的node.js服務器

我有一個服務器我的VPS使用此代碼:

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

server.listen(8080); 

io.on('connection', function(socket) { 
    socket.on('hello', function() { 
    console.log('Hello received'); 
    } 
} 

而一個客戶在另一臺機器:

<script> 
    var socket = io.connect('http://[VPS Public IP]:8080'); 
    io.emit('hello'); 
</script> 

使用私有IP地址,並在這工作同一網。當使用公共IP時,這不起作用。任何想法爲什麼會發生這種情況?

謝謝。

+0

VPS上是否有防火牆阻止端口?節點是否綁定到0.0.0.0? – dodecaphonic

+0

這是一個運行Ubuntu 16.04的VPS。我試圖禁用ufw(Ubuntu的默認防火牆),但我的VPS沒有安裝它,所以我想沒有防火牆。我對嗎? 我用server.listen(8080,「0.0.0.0」)代替了server.listen(8080),沒有任何變化。 –

+0

通過命令「telnet VPS_Public_IP 8080」驗證連通性 – Harikrishnan

回答

0

好吧,經過一些更多的測試,我已經解決了我自己的問題。

我意識到,VPS的公網IP(X.X.X.209)比他們給我通過使用串行控制檯工具SSH(X.X.X.221)連接的IP地址不同。

我正在使用這第二個IP地址X.X.X.221當我真正的公共IP是第一個。一旦我使用了X.X.X.209,它已經連接沒有任何問題。

謝謝你的意見和想法。