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

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