2017-05-06 54 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

你介意接受我的回答嗎? –