Заранее прошу прощения за глупые вопросы. Понимаю, что лучший ответ — позвать программиста, но я хочу разобраться сам.У меня есть клиент-серверная игра. Сервер на Питоне, клиент — сайт. Клиент и сервер общаются через вебсокет.
На сервере используется Торнадо:
main.py
from tornado import websocket, web, ioloop
from game import Game
import json
import os
file = open(os.path.dirname(os.path.abspath(__file__)) + '/../conf/tornado.conf')
config = json.load(file)
file.close()
app = web.Application([
(r'/ws', Game),
])
if __name__ == '__main__':
app.listen(config['port'])
ioloop.IOLoop.instance().start()
game.py
class Game(websocket.WebSocketHandler):
...
def __init__(self, *args, **kwargs):
"""
Создаёт объект Игры.
"""
super(Game, self).__init__(*args, **kwargs)
self.reset()
На клиенте:
var ws,
sovietNumber = 0,
previousColumnType,
gameStatus = 'active';
function startSocket() ;
setInterval(checkSocket, 5000);
}
function checkSocket()
}
Задача: если интернет пропал, переподключиться к той же игре, чтобы игрок продолжил играть.
Код с checkSocket и переподключением через пять секунд написал я. Он не работает, потому что при переподключении игра начинается заново.
Чтобы решить задачу мне не хватает понимания работы вебсокетов, клиент-серверной архитектуры и Питона. Вопросы:
1. Когда срабатывает код в main.py? Кто и как отличает одного клиента от другого.
2. Можно ли использовать встроенные идентификаторы вебсокета, чтобы переподключится к той же игре? Как это сделать, если можно.
Вопрос 2 я уже задавал на Стековерфлоу, там объяснили, что мне надо самому завести идентификатор игры, передавать его на сервер и, если игра есть, подключаться к ней. Если это единственный подходящий вариант, то:
3. Правильно ли я понимаю, что мне придётся перестать наследовать Game от websocket.WebSocketHandler и где-то хранить список игр? Какой тут образ решения может быть?
P. S. Привет старожилам форума, кажется прошло сто лет :-)