Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
bursonic opened this issue Jun 16, 2012 · 17 comments

Comments

@bursonic
Copy link

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 получить не может.

@eugene-dm
Copy link

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

@Slavenin
Copy link

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

@Slavenin
Copy link

автор, ау

@Magir
Copy link
Contributor

Magir commented Jun 20, 2013

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

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

@GaMsh
Copy link

GaMsh commented Jul 25, 2013

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

@Magir
Copy link
Contributor

Magir commented Jul 25, 2013

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

@GaMsh
Copy link

GaMsh commented Jul 26, 2013

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

@GaMsh
Copy link

GaMsh commented Dec 6, 2013

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

@dimikot
Copy link
Owner

dimikot commented Dec 7, 2013

@GaMsh
Copy link

GaMsh commented Dec 14, 2013

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

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

@dimikot
Copy link
Owner

dimikot commented Dec 14, 2013

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

@autowp
Copy link

autowp commented Feb 24, 2014

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

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

@OSDDQD
Copy link

OSDDQD commented Jun 15, 2015

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

@Slavenin
Copy link

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

@msidog2
Copy link

msidog2 commented Jul 13, 2015

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

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

@Slavenin
Copy link

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

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

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

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

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

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

@msidog2
Copy link

msidog2 commented Jul 14, 2015

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants