1

接続を失ったクライアントの再接続手順を構築しようとしています。クライアント js では、接続が失われたことを検出し、定期的にサーバーへの再接続を試みることができます。サーバーに再接続すると、新しいソケットが使用されます。

クライアントでは、これは私の再接続ロジックです

var socket = io.connect(ip, {
  'reconnect': true, //will create a new socket on the server
  'reconnection delay': options.retryInterval,
  'max reconnection attempts': 10
});

socket.on("disconnect", function() {
   this.connected = false;
   this.autoretry();
});

//establish the connection - similiar to the reconnect method
socket.emit("connect", this.options);

//....
autoretry: function() {
    if(this.connected) {return;};
    var next = this.__retry *= this.options.retryScalar;
    this.socket.emit("retry", this.connect.options);
    return _.delay(this.autoretry, next, this);
}

問題は、各クライアントがtls外部サーバーへの独自の接続を持っていることです。この接続を短時間開いたままにしたいと思います。クライアントが再接続するかどうかを確認するのを待っています。

ノードでクライアントを一意に識別する良い方法はありますか、それともクライアントで識別子を作成してサーバーに渡す必要がありますか?

4

1 に答える 1

1

クライアントを識別するためにsocket.io、expressjs セッションで動作させる必要があります。各セッションには一意の ID があり、多くの追加メソッドを使用してサーバー側でそれ自体を識別します(Cookie、ヘッダーなど)。

http://howtonode.org/socket-io-auth </p>

また、ソケット オブジェクトが callback に渡されると、ソケットはデフォルトで一意の ID を持ち、プロパティio.on('connection',function(socket)によってアクセスされます。socket.id

接続を失い、スクリプトが再接続を試みたクライアントを特定するにはreconnect、 、reconnectingreconnect_failedイベントをリッスンしてみてください。

https://github.com/LearnBoost/socket.io/wiki/Exposed-events

于 2013-11-02T22:35:59.730 に答える