2016-07-23 3 views
0

Я разрабатываю случайное приложение чата, которое соответствует клиенту с другим «случайным» клиентом. Pseudo-Random, потому что клиент будет запрашивать список «открытых» клиентов и выбирать из верхней части списка.1 on 1 Random Matchmaking

Я искал ответ, но, похоже, не существует ресурсов для решения для сватовства, основанного на реляционной базе данных в mySQL. Проблема, с которой я столкнулся, заключается в том, что если все клиенты были настроены на «поиск», каждый пользователь (пользователь) попытается подключиться к одному (а), а один (а) попытается подключиться к другому (б). {* пользователь преследует какое-то время, когда a преследует b одновременно.}

Какая будет самая простая структура и процесс подключения двух случайных клиентов для обмена информацией, когда оба находятся в пуле непревзойденных клиентов?

ответ

1

Я не уверен, что именно вы ищете, но, возможно, вместо того, чтобы каждый клиент активно искал другой, к которому можно было подключиться в базе данных, вы могли бы заставить всех клиентов просто войти в пул знакомств. Затем отдельный процесс, выполняющийся на сервере, будет проверять базу данных и сопоставлять людей в соответствии с любыми критериями, которые вы хотите, и удалять их из таблицы поиска. Это гарантирует, что люди не могут быть сопоставлены одновременно с несколькими людьми.

Я надеюсь, что это поможет несколько концептуально.

+0

Да, это определенно загадка, как бы вы настроили php-скрипт, чтобы постоянно проверять пул из базы данных и действовать как модератор для назначения каждого пользователя? Это та часть, в которой я не могу опустить голову. –

+0

Недавно я сделал нечто подобное. У вас может быть сценарий с бесконечным циклом while, который опросит базу данных для поиска пользователей, и когда он найдет два, он удалит эти записи из таблицы поиска и отправит информацию о соединении каждому клиенту. Если скрипт ничего не нашел в таблице поиска, он будет 'sleep (1)', а затем повторить. PHP не лучший язык, чтобы, конечно, работать с длительными процессами, но если вы используете диспетчер процессов, такой как Supervisord, чтобы убедиться, что сценарий остается запущенным на случай сбоя, это достойное решение. – JrBaconCheez

Смежные вопросы