2017-05-06 37 views
0

私はクライアントとサーバーのゲームを持っています。サーバーはPythonで、Tornadoを使用しています。同じWebsocketに再接続

​​

クライアントはJavaScriptを使用しています。

インターネットがダウンすると、クライアントが同じゲームに再接続しようとするので、ユーザーは引き続きプレイできるようにします。私はStackOverflowからいくつかの例を試しましたが、新しい接続とゲームを作成します:

function startSocket() { 
    ws = new WebSocket('ws://' + window.tornado.host + ':' + window.tornado.port + '/ws'); 
    ws.onopen = onSocketOpen; 
    ws.onmessage = onSocketMessage; 

    ws.onclose = function(event) { 
     checkSocket(); 
    }; 

    setInterval(checkSocket, 5000); 
} 

function checkSocket() { 
    if (!ws || ws.readyState === WebSocket.CLOSED) { 
     startSocket(); 
    } 
} 

どのように私は同じソケットに再接続できますか? (間違っていれば申し訳ありません)

+0

「同じソケット」とはどういう意味ですか?保持セッション?そのような場合は、何らかの理由でユーザーを特定する必要があります。 –

答えて

1

あなたの問題は接続ではなく、既存のゲーム状態を保持しています。クライアントが後で再接続するときに既存の状態を要求するために使用できるゲームが開始されると、生成された識別子をクライアントに送信するだけです。このIDは、URLに送信することも、接続に成功したときにソケットを使用することもできます。この後、サーバはどのデータを返信するかを知る。サーバーは、既存のデータを(IDを受け取った場合)送信するか、または新しいゲームを作成します(クライアントによってIDが送信されなかった場合)。

+0

に沿ってユニークなトークンを送信してください、ありがとうございました。私はwebsocket自体がこの識別子を持っていると思って、何とかそれを使用することができます。 – ksoftware

+0

あなたは私の答えを受け入れる気になりますか? –

関連する問題