2016-11-16 9 views
1


私はNode.jsを初めて使用していて、簡単なチャットアプリケーションを完成しようとしています。
しかし、私は立ち往生しています。私はGoogleにしようとし、他のソリューションを使用したが、私はそれが何らかの理由で働いて見つけることができません。もし誰かが私を助けてくれるなら、それはすばらしいことになるでしょう。Socket.IOはローカルで動作しますが、externallyではありません

エラーが表示されるのは、応答に時間がかかりすぎるということです。
ここに私のコードです。

サーバー側:

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

//##### PUSH HTML FILE 
app.get('/', function(req, res){ 
    res.sendFile(__dirname +'/index.html'); 
}); 

//##### START SERVER 
http.listen(3000, '0.0.0.0', function(){ 
    console.log('started on port: 3000'); 
}); 

//##### USER CONNECTED 
io.on('connection', function(socket){ 
    console.log('A User Connected'); 

//##### LOG MESSAGE 
socket.on('chat message', function(msg){ 
    console.log(msg); 
    io.emit('chat message', msg); 
}); 

//##### LOG USERNAME 
socket.on('set username', function(username){ 
    console.log('NEW USER: ' + username + ' has been set!'); 
    io.emit('set username', username); 
}); 

//#####USER DISCONNECTED 
socket.on('disconnect', function(){ 
    console.log('A user disconnected'); 
    }); 
}); 

クライアント側:事前に

<script src="/socket.io/socket.io.js"></script> 
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script> 
    <script> 
     var socket = io(); 

     //##### SET USERNAME 
     $('#set_username').submit(function(){ 
      socket.emit('set username', $('#username').val()); 
      return false; 
     }); 

     //##### SET MESSAGE 
     $('#sendmsg').submit(function(){ 
     var msg = '['+$('#username').val()+'] ' + $('#m').val(); 

      socket.emit('chat message', msg); 
      $('#m').val(''); 
      return false; 
     }); 

     //SET MESSAGE 
     socket.on('chat message', function(msg){ 
      $('#messages').append($('<li>').text(msg)); 
     }); 
    </script> 

ありがとう!コメントの

+0

クライアントに接続するサーバーはどこで指定していますか? –

+0

NATの後ろにいる。 – Turrican

+0

ここで暗闇の中でちょうど撃たれました、あなたのサーバー上のポート3000がファイアウォールの後ろにあると感じました@Turricanは、あなたのルータにNATを設定する必要があると言います..TCP/IPには区別がありませんローカルホスト(127.0.0.1)、または他のIP間また、すべてのインターフェイス0.0.0.0でリッスンしているので、問題のノードアプリケーションではありません。 – Keith

答えて

2

ルック:あなたがNATの背後にあるポート3000でリッスンしている

。外から接続する場合は、ルーターのローカルサーバーへのポート転送を設定する必要があります。 NATルールに誤字があります。

関連する問題