dklab_realplexor icon indicating copy to clipboard operation
dklab_realplexor copied to clipboard

проблема с получением сообщений, отправленных одновременно в разные каналы

Open bursonic opened this issue 12 years ago • 17 comments

js: ... realplexor.subscribe("Alpha", function(data, id) { document.getElementById('first').innerHTML += data + "
"; }); realplexor.subscribe("Beta", function(data, id) { document.getElementById('second').innerHTML += data + "
"; }); ...

php: .... $rpl->send("Alpha", array("here" => "is", "any" => array("structured", "data"))); $rpl->send("Beta", array("x" => "y", "other" => array("complex", "message"))); ....

После выпонения скрипта, в firebug видно, что по xhr запросу http://rpl.mydomain/?identifier=demo_Alpha,demo_Beta&ncrnd=1339863583432 пришло только одно сообщение (в Alpha). сообщение для Beta не пришло в новом xhr запросе http://rpl.mydomain/?identifier=1339863592.26114014500000:demo_Alpha,demo_Beta&ncrnd=1339863592325.

Далее при одновременной отправке сообщения продолжают приходить только в Alpha. Если отправить запрос только в Beta или вставить sleep(1); между запросами, то сообщение доходит.

После раздельной отправки сообщений любым из способов, начинают приходить одновременно отправленные сообщения. Запросы xhr вида http://rpl.mydomain/?identifier=1339864176.81945016900000:demo_Alpha,1339864177.82348017100000:demo_Beta&ncrnd=1339864237956.

Видно, что в последнем запросе, работающем корректно, обращение к Beta уже идет по ID:Name. Но ID был получен только после раздельной отправки сообщений. При одновременной отправке клиент ID получить не может.

bursonic avatar Jun 16 '12 16:06 bursonic

Столкнулись с той же самой проблемой. Хотелось бы узнать, есть ли какое-то решение, кроме установки задержки.

eugene-dm avatar Feb 05 '13 11:02 eugene-dm

интересно проект еще жив или уже не очень?.. проблема с id есть судя по идентификатору это метка микротайма, и так как сообщения приходят в один момент времени, то и метка у них получается одинаковая. Поковырялся в исходниках, не нашел, где задается id канала. Автор, если для тебя проект еще актуален, поправь пожалуйста этот баг, так как при большой нагрузке и подписке пользователя на некоторое количество каналов задержка даже в полсекунды это много. Согласен есть функционал рассылки сообщений в несколько каналов, но он подходит, если нужно отправить одинаковое сообщение в разные каналы. А если нужно отправить разные сообщения в разные каналы?

Slavenin avatar Apr 17 '13 10:04 Slavenin

автор, ау

Slavenin avatar Apr 23 '13 14:04 Slavenin

В JS нужно проставить курсоры: realplexor.setCursor("Alpha",0); realplexor.setCursor("Beta",0);

Должно помочь.

Magir avatar Jun 20 '13 17:06 Magir

setCursor делает выборку всего что есть в буфере - это не то. Очень острая проблема! Хэлп!

GaMsh avatar Jul 25 '13 11:07 GaMsh

Версию для C++ пробовали? У меня после перехода на неё куча глюков ушло само собой :)

Magir avatar Jul 25 '13 12:07 Magir

Вы про клиента? Я бы попробовал но речь идёт о сайте, а также клиенте на андроид, документации как правильно реализовать работу с протоколом я не нашел, всё сугубо копированием поведения JS клиента... :(

GaMsh avatar Jul 26 '13 11:07 GaMsh

Что-то не могу найти документации по установке c++ версии ((

GaMsh avatar Dec 06 '13 09:12 GaMsh

https://github.com/DmitryKoterov/dklab_realplexor/blob/master/cpp/src/Make.sh

dimikot avatar Dec 07 '13 01:12 dimikot

Нда... вроде всё просто, но зависимости руками брать откуда-то там... Не получается скомпилить вообщем :( А perl версия уже по 4-6 секунд на push задержки делает под не такой уж и большой нагрузкой... :(

dklab_realplexor.cpp:40:38: fatal error: boost/algorithm/string.hpp: Нет такого файла или каталога compilation terminated.

GaMsh avatar Dec 14 '13 12:12 GaMsh

Вы собирайте в Ubuntu, все должно получиться. Бинарник, кстати, получится без внешних зависимостей - его потом можно копировать на любую машину. Boost лучше собрать из исходников, кстати, но вроде бы по вашему сообщению об ошибке что-то гуглится.

dimikot avatar Dec 14 '13 21:12 dimikot

Подтверждаю наличие проблемы с недоставкой второго из единовременно отправляемых сообщений, как описано в сабже. Имеет место и для perl, и для cpp версий.

На словах фикс выглядит так: При отправке клиенту (слушающему 2 и более каналов), отправлять не только данные первого канала с меткой времени, но и метки времени для остальных каналов, которые должны инициализироваться временем установления соединения.

autowp avatar Feb 24 '14 13:02 autowp

Здравствуйте, это не issue, а скорее вопрос, но не смог подобрать правильного места. Что происходит с комнатами после того, как клиент отсоединился и в ней не осталось больше активных пользователей.

OSDDQD avatar Jun 15 '15 14:06 OSDDQD

Есть альтернатива http://post-hawk.com и не надо ничего ставить на сервер и настраивать.

Slavenin avatar Jun 16 '15 07:06 Slavenin

Проект забросил автор как я понял из гита и их сайта\форума.. уже пару дней мучаюсь с данным коммет сервером...на дебиане (впс слабой) скомпилировать не получилось ошибка gcc++ process kill чет там... на MAC OS не компилиться из-за ошибки в /events/server.h там есть параметры ::set а мак хочет что бы использовалось template...но кодить на том языке не шарю...юзаю перл версию...но нормальной доки или примеров толковых php не нашел..буду крутиться из того что уже имею.. Slavenin, посмотрел я тот пост-хавк и то совсем не выход...

  1. отправлять данные через чужой сервер "This is нехорошо"
  2. не известно как долго проживет тот проект да и уже лучше тогда использовать штатные средства сервера nginx (модули есть) или инные способы

msidog2 avatar Jul 13 '15 01:07 msidog2

  1. отправлять данные через чужой сервер "This is нехорошо"

библиотека поддерживает шифрование на клиенте, так что тут проблемы нет

  1. не известно как долго проживет тот проект

будет жить и развиваться :)

да и уже лучше тогда использовать штатные средства сервера nginx (модули есть) или инные способы

нужно их ставить настраивать и пилить свой велосипед, а здесь уже всё готово.

Slavenin avatar Jul 14 '15 07:07 Slavenin

Вы правы, На вкус и цвет фломастеры все равно одинаковые =) Разобрался с данным плексером, очень радует скорость работы... Но ломаю голову не первый час как интегрировать свой самопис...

msidog2 avatar Jul 14 '15 07:07 msidog2