gpt4 book ai didi

javascript - 重新连接到同一个 Websocket

转载 作者:行者123 更新时间:2023-12-01 03:41:51 25 4
gpt4 key购买 nike

我有一个客户端服务器游戏。服务器采用 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();
}
}

如何重新连接到同一个套接字? (抱歉,如果术语不正确)

最佳答案

您的问题不是连接,而是保留现有的游戏状态。只需在游戏开始时将生成的标识符发送给客户端,客户端稍后可以在重新连接时使用该标识符来请求现有状态。该 ID 可以在 URL 中发送,也可以在连接成功时使用套接字发送。此后服务器将知道要发回哪些数据。服务器将发送现有数据(当收到 ID 时)或创建新游戏(当客户端没有发送 ID 时)。

关于javascript - 重新连接到同一个 Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43818534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com