2016-05-23 65 views
3
  • サーバでは、ネットワーク接続後に切断イベントが発生し、ネットワークに が落ちてクライアントが再接続しました。

クライアントコード:Node.js Socket.ioエラー:接続後に切断イベントが発生しました

var url ='192.168.1.101', port = '80', 
    socket = io.connect('http://' + url + ':' + port, { 
    'reconnect': true, 
    reconnection: true, 
    reconnectionDelay: 1000, 
    reconnectionDelayMax: 5000, 
    timeout: 1000 
}); 

//イベント

socket.on('connect', function() { 
    console.log('connected'); 
}); 

//切断イベント

0を接続//

socket.on('reconnect', function (nr) { 
    console.log('reconnected, nr: ', nr); 
}); 

イベントを再接続

socket.on('disconnect', function() { 
    console.log('disconnected'); 
}); 

Serverコード:接続がアクティブである間に、クライアントとサーバーの交換心がメッセージを倒す

'use strict'; 
var fs = require('fs'), 
    express = require('express'), 
    app = express(), 
    io = require('socket.io'), 
    server = require('http').createServer(app), 
    compress = require('compression'), 
    socket; 

app.use(compress({level: 9})); 

server.listen(port, url); 
socket = io.listen(server, {'pingTimeout': 1000, 'pingInterval': 3000}); 

socket.on('connection', function (client) { 
    console.log('client connected'); 

    client.on('disconnect', function() { 
     console.log('client disconnected'); 
    }); 
}); 
   
- Result on server if client reconnects: 

> client connected 
> client disconnected 

Can someone explain to me why this is happening? 
+0

再接続を試みますか?それともそれを切断してそれだけですか? – Deckerz

答えて

0

。サーバーがこれらのメッセージの受信を停止すると、クライアントは切断されたと宣言します。また、クライアントは明示的に切断することもできます。

あなたが経験しているのはおそらく最初のケースです。クライアントは再試行ロジックを持っているので、接続が切断されると再接続しようとします。なぜこのようなことが起こっているのか分かりません。ブラウザーのコンソールにあるネットワークタブを見て、リクエスト/レスポンスレベルで何が起きているのかを確認することができます。

REF:あなたはclient disconnectedclient connectedテキストが同じソケット/接続からであることを確認してください https://github.com/socketio/socket.io/issues/1910

https://github.com/miguelgrinberg/Flask-SocketIO/issues/116

0

ていますか?おそらく、最初の接続は以前の接続からのもので、新しい接続についての情報より少し遅れて配信されますか?

接続/ソケットにID番号を生成して追加し、情報メッセージとともにコンソールに出力してみます。

+0

新しいクライアントが接続され、古いものが接続されていて、古いものが接続されていない場合、ID番号は異なっています... – Vali

+0

これですべてがOKです。あなたは正しい出来事をしています。それは、彼らがあなたが取ることができる順序とは異なる順序であなたに届けられるということだけです。しかし、これは大丈夫です - 異なるソースからの非同期イベントの順序に依存するべきではありません。 – ahwayakchih

+0

私はチャットアプリで作業中ですので、切断イベントが発生した場合、ユーザーはユーザーリストから削除されます...再接続され、切断されました... – Vali

関連する問題