我有一个客户端 - 服务器游戏。服务器使用Python并使用Tornado:
main.py
app = web.Application([
(r'/ws', Game),
])
if __name__ == '__main__':
app.listen(config['port'])
ioloop.IOLoop.instance().start()
...
game.py
class Game(websocket.WebSocketHandler):
...
客户端使用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 :(得分:2)
你的问题不是连接,它保留了现有的游戏状态。只需在游戏开始时将生成的标识符发送给客户端,客户端稍后可以使用该标识符在重新连接时请求现有状态。成功连接时,可以在URL中或使用套接字发送此ID。在此之后,服务器将知道要发回的数据。服务器将发送现有数据(当收到id时)或创建新游戏(当客户端没有发送id时)。