2017-04-23 12 views
3

まあ、私はこの質問が愚かでも繰り返しでもないことを願っています。私は多くを研究し、テストしたことを約束します。VPSのnode.jsサーバーに接続できません

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

プライベートIPアドレスとを使用している場合これは動作します:別のマシンで

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'); 
    } 
} 

そしてクライアント

私はこのコードで私のVPS上サーバーを持ってきました同じネット。パブリックIPを使用する場合、これは動作しません。これはなぜ起こっているのだろうか?

ありがとうございます。

+0

ポートをブロックしているVPS上にファイアウォールがありますか?ノードバインドは0.0.0.0ですか? – dodecaphonic

+0

Ubuntu 16.04で動作するVPSです。私はufw(Ubuntuのデフォルトのファイアウォール)を無効にしようとしましたが、私のVPSはそれをインストールしていないので、ファイアウォールはないと思います。私は正しい? server.listen(8080)をserver.listen(8080、 "0.0.0.0")に置き換えましたが、何も変更されていません。 –

+0

コマンドで接続を確認する 'telnet VPS_Public_IP 8080' – Harikrishnan

答えて

0

もう少しテストした後、私は自分の問題を解決しました。

私はVPSのパブリックIPは(X.X.X.209)彼らは私がシリアルコンソールのツールを使用してSSH(X.X.X.221)を介して接続するために与えるIPアドレスと異なることに気づきました。

私の実際の公開IPが最初のものである場合、この第2のIPアドレスX.X.X.221を使用していました。 X.X.X.209を使用しても問題なく接続できました。

ご意見ありがとうございました。

関連する問題