14

クライアントが socket.io 経由で接続しているときに、サーバー上のクライアントを承認するための ID を含むカスタム クエリ文字列を渡します。

var env = {id:12345};
var socket = io.connect('https://example.com', {query:'i='+env.id, port:443, reconnect:false, secure:true});  

クライアントが何らかの理由で切断した場合、次の関数を呼び出すだけで再接続できます。

socket.socket.connect();

ただし、再接続時にはenv.id通常、最初の接続時とは異なる値が含まれているため、再接続するたびにクエリ文字列に現在の値を含めたいと考えています。

env.id上記の再接続メソッドは、途中で別の値に変更された場合でも、初期値を再送信します。

再接続関数を呼び出すときに現在のパラメーターを設定しようとしましたが、うまくいかないようです。

socket.socket.connect('https://example.com', {query:'i='+env.id, port:443, reconnect:false, secure:true})  

env.idクエリ文字列だけを現在の値で更新してから再接続する簡単な方法はありますか?

var socket = io.connect()または、一度切断されたソケット オブジェクト全体を破棄し、現在の IDを使用して新しい接続を構築する必要がありますか?

4

5 に答える 5

12

ソケット オブジェクトを分析して解決策を見つけたので、自分の質問に答えています。

クエリ文字列は の中に格納されsocket.socket.options.queryます。再接続する前に直接目的の値に変更できます。

socket.socket.options.query = 'i='+env.id;
socket.socket.connect();
于 2014-02-24T23:16:04.423 に答える