LINUX.ORG.RU

websocket server

 ,


1

1

Сделал websocket сервер на Ratchet
Проблема в том, что в onMessage если будет долгая выборка из БД или ещё какая-нибудь длительная операция(например загрузка URL), то весь сервер ступорится и не обрабатывает сообщения в loop. После выполнения длительной операции все сообщения, которые накопились в очереди отрабатываются и проходят нормально.

Объясню на примере чата:
Пишет один в чате Hello, js отсылает через вебсокет это сообщение, в onMessage я пересылаю всем это сообщение и после скачиваю файл. Так вот, сообщения эти не уходят, пока файл не будет скачан до конца и другие когда пишут тоже не могут написать, потому что сервер ступорится и обрабатывает все сообщения после завершения операции.


Пример сервера можно посмотреть на
https://github.com/ratchetphp/Ratchet

★★★★
Ответ на: комментарий от nguseff

Все получилось, протестил на 1000 конектов. Спасибо, +1 в карму тебе

gobot ★★★★
() автор топика
Ответ на: комментарий от nguseff

Все таки thread блокируют очередь ratchet. Я в onMessage вебсокета запускаю трид и если в нем поставить sleep(100) то очередь блокируется и новые сообщения в вебсокет не приходят. Не пойму что заставляет блокировать

gobot ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.