Как связать 2 клиента, подключенных к серверу на Python, между собой?
Есть небольшое простенькое приложение, которое работает как эхо-сервер. На Python. Каждое подключение он определяет в отдельный поток.
Это приложение задумывалось как сервер для небольшой игры - пользователи к нему подключаются, каким-то образом находится пара подходящих друг другу и они связываются в единое "что-то" (попадают в отдельную комнату), в которой происходит обмен сообщения между ними и сервером.
Не могу понять, как это реализовать. Возможно, я запутался в терминах и делаю вообще не то?
Как вариант можно воспользоваться очередью сообщений. Клиент должен иметь интерфейс:
*написать в очередь с именем X
*забрать сообщение если оно есть
*подписаться на обновления очереди X
Создаем очередь для поиска игры. Подписываемся на нее и добавляем в нее себя. Когда нам приходит уведомление что некий Вася написал в эту очередь пытаемся с ним связаться напрямую или через персональную очередь Васи. Если Вася все еще свободен он отвечает ОК и вы начинаете игру, иначе ждем следующего подходящего игрока.
В таком варианте "комната" это либо прямое TCP соединение либо пара личных очередей сообщений Васи и Пети которые играют между собой.
Вероятно, очередь в данном случае не подойдёт: в игру должен поступать не тот, кто первый встал в очередь, а тот, кто подходит по какому-то параметру. В данном случае - по уровню пользователя, хранящемуся где-то в базе. То бишь, есть постоянно пополняемый список желающих играть и из него выдёргивается тот, кто подходит новому по уровню. Если никто - добавляется в список.