Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Dklab_Realplexor: Comet-сервер промышленного масштаба с API для PHP и JavaScript (Дмитрий Котеров)
Goto page Previous  1, 2, 3 ... 8, 9, 10, 11  Next
Author Message
HunteX
Заглянувший



Joined: 05 Feb 2012
Posts: 2
Карма: -1
   поощрить/наказать


PostPosted: Sun Feb 05, 2012 11:01 am (написано за 6 минут 18 секунд)
   Post subject: Хелп - Realplexor
Reply with quote

Здравствуйте. Установил Realplexor dklab_realplexor-b9f4277, запустил, проверил:
Code (Bash): скопировать код в буфер обмена
# netstat -tunap | grep 'perl'
tcp        0      0 127.0.0.1:10010         0.0.0.0:*               LISTEN      26027/perl
tcp        0      0 0.0.0.0:8088            0.0.0.0:*               LISTEN      26027/perl

# wget http://127.0.0.1:10010/
--2012-02-05 12:39:47--  http://127.0.0.1:10010/
Connecting to 127.0.0.1:10010... connected.
HTTP request sent, awaiting response...
Вроде работает.

Адрес сайта:
r.site.ru/

Создал поддомен для r.site.ru:
rpl.r.site.ru/

Скопировал в r.site.ru из директории /opt/dklab_realplexor/ пару файлов:
dklab_realplexor.js
api/php/Dklab/Realplexor.php

Создал в r.site.ru следующие файлы:
1) test.html:
Code (html): скопировать код в буфер обмена
<html> (december.com/html/4/element/html.html)

<div (december.com/html/4/element/div.html) id="first" style="border:1px solid black; width:30%; float:left"> (december.com/html/4/element/.html)</div>
<div (december.com/html/4/element/div.html) id="second" style="border:1px solid black; width:30%; float:left"> (december.com/html/4/element/.html)</div>

        <script (december.com/html/4/element/script.html) type="text/javascript" src="dklab_realplexor.js"> (december.com/html/4/element/.html)</script>
        <script (december.com/html/4/element/script.html) type="text/javascript"> (december.com/html/4/element/.html)
                var realplexor = new Dklab_Realplexor("http://rpl.r.site.ru/", "nsp");
                realplexor.subscribe("Alpha", function(data, id) {
                    $('#first').innerHTML += data + "<br> (december.com/html/4/element/br.html)";
                });
                realplexor.subscribe("Beta", function(data, id) {
                    $('#second').innerHTML += data + "<br> (december.com/html/4/element/br.html)";
                });
                realplexor.execute();
                realplexor.execute();
        </script>
</html>
2) index2.php:
Code (php): скопировать код в буфер обмена
<?php
require_once "Realplexor.php";
$rpl = new Dklab_Realplexor(
    "127.0.0.1", // host at which Realplexor listens for incoming data
    "10010",     // incoming port (see IN_ADDR in dklab_realplexor.conf)
    "nsp"        // namespace to use (optional)
);


// Send data to multiple channels at once.
$rpl->send(array (www.php.net/array)("Alpha", "Beta"), "any data");
?>
Конфиг rpl.r.site.ru nginx для фронтенда:
Code (any language): скопировать код в буфер обмена
server {
        listen   80;

        server_name  rpl.r.site.ru;

        location / {
                proxy_pass http://10.0.0.50:8088;
        }
}
Выполнение test.html и запуск index2.php для проверки Realplexor ничего не дает (данные от сервера не получаются), хотя в страницу добавляется следующее:
Code (html): скопировать код в буфер обмена
<iframe (december.com/html/4/element/iframe.html) id="mpl1328440624347" onload="Dklab_Realplexor._iframeLoaded("mpl1328440624347")" src="http://rpl.r.site.ru/?identifier=IFRAME&HOST=r.site.ru&version=1.32" style="position:absolute; visibility:hidden; width:200px; height:200px; left:-1000px; top:-1000px"/> (december.com/html/4/element/.html)
Лог (запуск test.html и потом index2.php):
Code (Bash): скопировать код в буфер обмена
/opt/dklab_realplexor# perl ./dklab_realplexor.pl /etc/dklab_realplexor.conf
[Sun Feb  5 16:55:08 2012] CONFIG: file /etc/dklab_realplexor.conf does not exist, skipping
  [pairs_by_fhs=0 data_to_send=0 connected_fhs=0 online_timers=0 cleanup_timers=0 events=0]
[Sun Feb  5 16:55:08 2012] Starting. Opened files limit (ulimit -n): 1048576.
  [pairs_by_fhs=0 data_to_send=0 connected_fhs=0 online_timers=0 cleanup_timers=0 events=0]
[Sun Feb  5 16:55:08 2012] CONFIG: file /etc/dklab_realplexor.conf does not exist, skipping
  [pairs_by_fhs=0 data_to_send=0 connected_fhs=0 online_timers=0 cleanup_timers=0 events=0]
[Sun Feb  5 16:55:08 2012] WAIT: listening 0.0.0.0:8088
  [pairs_by_fhs=0 data_to_send=0 connected_fhs=0 online_timers=0 cleanup_timers=0 events=0]
[Sun Feb  5 16:55:08 2012] IN: listening 127.0.0.1:10010
  [pairs_by_fhs=0 data_to_send=0 connected_fhs=0 online_timers=0 cleanup_timers=0 events=0]
[Sun Feb  5 16:55:08 2012] Switching current user to unprivileged "nobody"
  [pairs_by_fhs=0 data_to_send=0 connected_fhs=0 online_timers=0 cleanup_timers=0 events=0]
[Sun Feb  5 16:55:12 2012] WAIT: 10.0.0.1:35310: DEBUG: connection opened
  [pairs_by_fhs=0 data_to_send=0 connected_fhs=0 online_timers=0 cleanup_timers=0 events=0]
[Sun Feb  5 16:55:12 2012] WAIT: 10.0.0.1:35310: DEBUG: read 633 bytes
  [pairs_by_fhs=0 data_to_send=0 connected_fhs=0 online_timers=0 cleanup_timers=0 events=0]
[Sun Feb  5 16:55:12 2012] WAIT: 10.0.0.1:35310: DEBUG: [1328442839.52196000300000:Alpha,(and 1 more)] registered
  [pairs_by_fhs=1 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:13 2012] WAIT: 10.0.0.1:35312: DEBUG: connection opened
  [pairs_by_fhs=1 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:13 2012] WAIT: 10.0.0.1:35312: DEBUG: read 594 bytes
  [pairs_by_fhs=1 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:13 2012] WAIT: 10.0.0.1:35312: DEBUG: IFRAME marker received, sending content
  [pairs_by_fhs=1 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:13 2012] WAIT: 10.0.0.1:35312: DEBUG: connection closed
  [pairs_by_fhs=1 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:14 2012] WAIT: 10.0.0.1:35313: DEBUG: connection opened
  [pairs_by_fhs=1 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:14 2012] WAIT: 10.0.0.1:35313: DEBUG: read 581 bytes
  [pairs_by_fhs=1 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:14 2012] WAIT: 10.0.0.1:35313: DEBUG: [1328442914.65550000200000:Alpha,(and 1 more)] registered
  [pairs_by_fhs=2 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:17 2012] IN: 127.0.0.1:48895: DEBUG: connection opened
  [pairs_by_fhs=2 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:17 2012] IN: 127.0.0.1:48895: DEBUG: read 109 bytes
  [pairs_by_fhs=2 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:17 2012] IN: 127.0.0.1:48895: DEBUG: parsed IDs
  [pairs_by_fhs=2 data_to_send=0 connected_fhs=2 online_timers=2 cleanup_timers=0 events=2]
[Sun Feb  5 16:55:17 2012] IN: 127.0.0.1:48895: DEBUG: added data for [nspAlpha,nspBeta]
  [pairs_by_fhs=2 data_to_send=2 connected_fhs=2 online_timers=2 cleanup_timers=2 events=2]
[Sun Feb  5 16:55:17 2012] IN: 127.0.0.1:48895: DEBUG: connection closed
  [pairs_by_fhs=2 data_to_send=2 connected_fhs=2 online_timers=2 cleanup_timers=2 events=2]
Тестирование (как сказано тут dklab.ru/lib/dklab_multiplexor/) при помощи телнета, выдало в браузере следующее:
Code (any language): скопировать код в буфер обмена
[
  {
    "ids": { "abcd": "1328442377.52181002600000" },
    "data":
A message from the server!

  }
]
Что я делаю не так?

p.s. конфиг /etc/dklab_realplexor.conf не создавал, так как впринципе дефолтные настройки меня устраивают. Все делал по ману с офф сайта.

С уважением,
Андрей.
Back to top
View user's profile Send private message
HunteX
Заглянувший



Joined: 05 Feb 2012
Posts: 2
Карма: -1
   поощрить/наказать


PostPosted: Thu Feb 09, 2012 8:21 am (спустя 3 дня 21 час 19 минут; написано за 52 секунды)
   Post subject:
Reply with quote

Эмм, что, никто не знает? Или, может, я не в ту тему написал?
Back to top
View user's profile Send private message
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9990
   поощрить/наказать


PostPosted: Thu Feb 09, 2012 10:52 am (спустя 2 часа 30 минут; написано за 11 секунд)
   Post subject:
Reply with quote


!

HunteX, forum.dklab.ru/about/todo/PravilaEtogoForuma-ProchitayteObyazatelno.html
Quote:
На форуме запрещается:

   …
   …
   6. «качать права», требовать немедленного ответа на свой вопрос — Вам тут никто ничего не должен и ничем не обязан!
Back to top
View user's profile Send private message
Dewalt
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Feb 27, 2012 1:48 pm (спустя 18 дней 2 часа 56 минут; написано за 4 минуты 27 секунд)
   Post subject:
Reply with quote

HunteX, данные от сервера видимо получаются, но не выводяться ( кстати, дебагер FireBug либо хром утилиты частенько не показывают инфу по длительным соединениям)

Возможно проблема в скрипте (JS)

Вы пытаетесь у jQuery массива вызвать свойство принадлежащее document.ELEMENT, посмотрите ругается ли дебаггер на ошибки в JS и попробуйте следующее:
Code (JavaScript): скопировать код в буфер обмена
realplexor.subscribe("Alpha", function(data, id) {
   document.getElementById('first').innerHTML += data + "<br>";
});
Back to top
Dewalt
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Feb 27, 2012 2:55 pm (спустя 1 час 7 минут; написано за 45 секунд)
   Post subject:
Reply with quote

HunteX, и еще, Вы посылаете инструкцию realplexor.execute() дважды, вполне возможно что второй вызов парсит 0 добавленных каналов и переписывает первый.
Back to top
995533
Заглянувший



Joined: 15 Jun 2010
Posts: 14
Карма: -5
   поощрить/наказать


PostPosted: Wed Feb 29, 2012 4:57 pm (спустя 2 дня 2 часа 1 минуту; написано за 1 минуту 32 секунды)
   Post subject:
Reply with quote

Здравствуйте

пытаюсь собрать под CentOS 6.2
не могу скомпилировать cpp версию


In file included from dklab_realplexor.cpp:76:
utils/ev++0x.h:4:18: error: ev++.h: Нет такого файла или каталога
In file included from dklab_realplexor.cpp:71:
utils/misc.h: In function ‘void die(std::string)’:
utils/misc.h:83: ошибка: expected primary-expression before ‘[’ token
компиляция прервана из за ошибок -Wfatal-errors.


Все пакеты стоят включая libev

как быть
Back to top
View user's profile Send private message
evgentus
Заглянувший



Joined: 02 Mar 2012
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Fri Mar 02, 2012 7:34 pm (спустя 2 дня 2 часа 37 минут; написано за 8 минут 27 секунд)
   Post subject:
Reply with quote

Доброго времени суток.

Установил realplexor, работает только в браузере Chrome в Убунту, и ответы в канал приходят и соединение рвется нормально через 5 мин.
Но в других браузерах в винде и в убунте работает странно, если после загрузки станицы в течении 33 секунд не отослать ничего в канал, то соединение может висеть 30мин, и ответы не приходят... после этих 30мин, соединение разрывается и при создании нового все сообщения (которые отсылали раньше) приходят.

В Chrome в убунте все ок.

конфиг realplexor - стандартный

конфиг nginx:
Quote:
server{
listen rpl.host.ru:80;
server_name rpl.host.ru
location / {
expires off;
keepalive_timeout 65 40;
reset_timedout_connection on;
send_timeout 500;
proxy_pass 127.0.0.1:8088;
proxy_ignore_client_abort on;
proxy_send_timeout 500;
proxy_read_timeout 500;
gzip off;
}
}
Back to top
View user's profile Send private message
Moltisanti
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Mar 19, 2012 9:51 pm (спустя 17 дней 2 часа 16 минут; написано за 3 минуты 31 секунду)
   Post subject:
Reply with quote

кто нибудь сталкивался с проблемой, что рилплексор периодически теряет каналы? то есть клиент подписан, отправлен запрос рилплексору, ждем данные, но внезапно рилплексор перестает видеть наш канал (в Dklab_Realplexor::cmdOnline() его нет) и соединене продолжает бесконечно висеть.. за долгое время я не смог выявить закономерности происходящего
Back to top
e2e4
Заглянувший



Joined: 17 Apr 2012
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Tue Apr 17, 2012 9:31 pm (спустя 28 дней 23 часа 40 минут; написано за 13 минут 57 секунд)
   Post subject:
Reply with quote

Moltisanti wrote:
кто нибудь сталкивался с проблемой, что рилплексор периодически теряет каналы? то есть клиент подписан, отправлен запрос рилплексору, ждем данные, но внезапно рилплексор перестает видеть наш канал (в Dklab_Realplexor::cmdOnline() его нет) и соединене продолжает бесконечно висеть.. за долгое время я не смог выявить закономерности происходящего
В настоящий момент борюсь с подобной проблемой.

Увеличили WAIT_TIMEOUT всего-то раза в 2.
Клиентские подписанные соединения висят открытыми, после длительного простоя (1-2 часа) с соответствующими циклами дисконнект / регистрация данные по ним ходить перестают. т.е. в IN они успешно сендятся, у клиентов - тишина.
Причем в разных сетях соединения ведут себя по-разному (грешим на NAT одного провайдера, может как-то хитро душит спящие коннекты, не разрывая?)

На данный момент попросили realplexor слать клиентам keep-alive'ы каждые 60 сек. (не разрывая соединения до WAIT_TIMEOUT), вроде глюки пропали, тестируем...

ЗЫ: или глаза у меня в кучу, или штатной возможности кипаливы слать не предусмотрено конструкцией, пришлось допиливать ontimeout
Back to top
View user's profile Send private message
e2e4
Заглянувший



Joined: 17 Apr 2012
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Tue Apr 17, 2012 9:45 pm (спустя 13 минут; написано за 8 минут 19 секунд)
   Post subject:
Reply with quote

И вдогонку вопрос мудрым форумчанам:

Последние версии популярных браузеров как-то неочень жалуют попытки тронуть document.domain , блокируя фрейм, в который грузится канал, от остальных фреймов и фреймсета (да, это чат).
То есть, загрузивший фрейм получает данные, но оприходовать их ему практически некуда - везде исключения безопасности (опера,хром,ие) и только бесстрашный файрфокс с олимпийским спокойствием дает доступ к другим фреймам.

Кто-нибудь в курсе последних веяний в области кросдоменных загрузок?

После двух суток жесткого гугла мы позорно бросили попытки передавать данные в соседние фреймы иначе как через postMessage... таким образом, обратная совместимость со старыми лисами и ослами достигнута не была :(
Back to top
View user's profile Send private message
goga_it
Заглянувший



Joined: 30 May 2012
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Wed May 30, 2012 10:34 am (спустя 1 месяц 12 дней 12 часов 49 минут; написано за 3 минуты 12 секунд)
   Post subject: Проблема с dklab_realplexor а именно с каналами спустя 5-6 сек
Reply with quote

Ребята нужна ваша помощь в общем настроил локально и на внешнем сервере dklab_realplexor локально работает отлично всё как положенно а на внешнем сервер который орендуем, когда посылается на сарвер запрос на dklab_realplexor регестрируется слушатель но спустя 5-6 секунд ему перестают приходить ответы которые отправляем в канал, при этом соединение не оборвано!!!Где может быть проблема в настройках помогите пожайлуста
Back to top
View user's profile Send private message
pr0tect0r
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed May 30, 2012 7:17 pm (спустя 8 часов 42 минуты; написано за 2 минуты 24 секунды)
   Post subject:
Reply with quote

Не могу найти где собака порылась:

Простой код:
Code (html): скопировать код в буфер обмена
<html> (december.com/html/4/element/html.html)
<head> (december.com/html/4/element/head.html)
<script (december.com/html/4/element/script.html) src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"> (december.com/html/4/element/.html)</script>
<script (december.com/html/4/element/script.html) type="text/javascript" src="http://rpx.24ffx.ru/?identifier=SCRIPT&<?=time()?>"></script>
</head>
<body>
<script type="text/javascript">
                                <!--
                                        var comet = new Dklab_Realplexor('http://rpx.24ffx.ru/', 'ticks_');
               
                                        comet.subscribe("
EURUSD_m_BID", function (data, id){
                                                $('#EURUSD_m_BID').html(data);
                                        });
                                        comet.subscribe("
EURUSD_m_ASK", function (msg, id){
                                                $('#EURUSD_m_ASK').html(msg);
                                        });
                                        comet.execute();
                                //-->

</script>
                        </script>


                        <div id="EURUSD_m_BID">1.00000</div>
                        <div id="EURUSD_m_ASK">1.00000</div>


</body>
</html>
Обновляется только второй канал. Первый канал даже запросов нет (судя по FB и ИР).
Причем каналы по отдельности работают - если тупо убрать второй канал - первый начинает принимать сообщение.
В логах realplexor-а - на первом канале Wait.
Back to top
pr0tect0r
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu May 31, 2012 10:10 am (спустя 14 часов 52 минуты; написано за 38 секунд)
   Post subject:
Reply with quote

причем ечли вывести cmdOnline - показывает, что эти каналы онлайн.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu May 31, 2012 8:12 pm (спустя 10 часов 1 минуту; написано за 51 секунду)
   Post subject:
Reply with quote

Попробуйте подключиться в IN-каналу телнетом и ввести там команду "stats":

telnet хост_реалплексора порт_канала_IN
stats

Это отладочная команда, распечатывает, какие данные в каких очередях есть в настоящий момент.
Back to top
View user's profile Send private message Send e-mail
pr0tect0r
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Jun 01, 2012 8:11 am (спустя 11 часов 58 минут; написано за 1 минуту 40 секунд)
   Post subject:
Reply with quote

замечена закономерность:
в логах
Code (any language): скопировать код в буфер обмена
GET /?identifier=ticks_EURUSD_m,ticks_GBPUSD_m,ticks_NZDUSD_m,ticks_USDCHF_m,ticks_USDJPY_m,[b]1338527289.74294
081100000:ticks_AUDCAD_m[/b],ticks_USDCAD_m,ticks_AUDJPY_m,ticks_AUDCHF_m&ncrnd=1338527274094 HTTP/1.1" 200 162 "http://rpx.24ffx.ru/?identifier=IFRAME&HOST=24ff
x.ru&version=1.32
Обновляется ТОЛЬКО канал ticks_AUDCAD_m

Другой пример:
Code (any language): скопировать код в буфер обмена
GET /?identifier=1338527292.78968084900000:ticks_EURUSD_m_BID,[b]1338527289.75736082200000:ticks_EURUSD_m_ASK[/b]&ncrnd=
1338527283730 HTTP/1.1" 200 113 "http://rpx.24ffx.ru/?identifier=IFRAME&HOST=24ffx.ru&version=1.32
обновляется только ticks_EURUSD_m_ASK
Back to top
pr0tect0r
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Jun 01, 2012 11:29 am (спустя 3 часа 18 минут; написано за 45 секунд)
   Post subject:
Reply with quote

Quote:
[root@****** ~]# telnet 127.0.0.1 10010
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
stats
Подключаюсь телнетом - на stats ничего не выводит
Back to top
wounderer
Заглянувший



Joined: 03 Jun 2012
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Sun Jun 03, 2012 7:58 pm (спустя 2 дня 8 часов 29 минут; написано за 2 минуты 50 секунд)
   Post subject: Unsubscribe all
Reply with quote

Прежде всего хочу выразить огромную благодарность автору за столь достойный продукт.
Вопрос следующий:
Использую Realplexor в своем проекте для реализации чата.
Как отменить подписку пользователя на все текущие каналы ? (Для реализации простого фильтра каналов, когда идет подписка на несколько каналов).
Одним словом, как сделать unsubscribe('all');
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Jun 05, 2012 6:00 pm (спустя 1 день 22 часа 1 минуту; написано за 39 секунд)
   Post subject:
Reply with quote

pr0tect0r wrote:
Подключаюсь телнетом - на stats ничего не выводит
После stats надо 2 раза Enter нажать - он же воспринимает сессию как HTTP-запрос, а stats должен идти в рамках блока заголовков (заголовки отделяются от дела пустой строкой). И - у вас логи в предыдущем посте немного превратились в кашу, можете в виде текстового файла-аттачмента приложить?
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Jun 05, 2012 6:04 pm (спустя 3 минуты; написано за 59 секунд)
   Post subject:
Reply with quote

wounderer wrote:
Одним словом, как сделать unsubscribe('all');
В текущей версии - никак, однако вы можете попробовать сделать следующее:

rpl._map = {};
rpl.execute();

Если заработает, можно будет добавить функцию в стандартную поставку.
Back to top
View user's profile Send private message Send e-mail
pr0tect0r
Заглянувший



Joined: 06 Jun 2012
Posts: 7
Карма: 0
   поощрить/наказать


PostPosted: Wed Jun 06, 2012 6:29 am (спустя 12 часов 25 минут; написано за 52 секунды)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
 stats



stats.txt
 Description:

Download
 Filename:  stats.txt
 Filesize:  12.99 KB
 Downloaded:  348 Time(s)

Back to top
View user's profile Send private message
pr0tect0r
Заглянувший



Joined: 06 Jun 2012
Posts: 7
Карма: 0
   поощрить/наказать


PostPosted: Wed Jun 06, 2012 6:51 am (спустя 21 минуту; написано за 4 минуты 41 секунду)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
 И - у вас логи в предыдущем посте немного превратились в кашу, можете в виде текстового файла-аттачмента приложить?
замечена закономерность:
в логах:


83.246.140.199 - - [06/Jun/2012:06:45:02 +0300] "GET identifier = ticks_EURUSD_m,ticks_GBPUSD_m,ticks_NZDUSD_m,ticks_USDCHF_m,ticks_USDJPY_m,
1338954299.44547022200000:ticks_AUDCAD_m,ticks_USDCAD_m,ticks_AUDJPY_m,
ticks_AUDCHF_m&ncrnd=1338954277310 HTTP/1.1" 200 162



на странице обновляется только ticks_AUDCAD_m, т.е. символ переданный с курсором.
1. Почему остальные символы передаются без курсора? подписка всех каналов одинаковая - без курсоров.


log.txt
 Description:

Download
 Filename:  log.txt
 Filesize:  2.2 KB
 Downloaded:  406 Time(s)

Back to top
View user's profile Send private message
pr0tect0r
Заглянувший



Joined: 06 Jun 2012
Posts: 7
Карма: 0
   поощрить/наказать


PostPosted: Wed Jun 06, 2012 7:16 am (спустя 24 минуты; написано за 19 секунд)
   Post subject:
Reply with quote

соответственно при установке курсора проблема решается
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Jun 06, 2012 10:05 pm (спустя 14 часов 48 минут; написано за 44 секунды)
   Post subject:
Reply with quote

Так-так, интересно!
А вы какую версию используете: перловую или C++-ную? (Компилировали ли C++-код перед работай с реалплексором? если нет, то перловую, значит.)
Back to top
View user's profile Send private message Send e-mail
pr0tect0r
Заглянувший



Joined: 06 Jun 2012
Posts: 7
Карма: 0
   поощрить/наказать


PostPosted: Thu Jun 07, 2012 4:37 am (спустя 6 часов 32 минуты; написано за 4 минуты 38 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Так-так, интересно!
А вы какую версию используете: перловую или C++-ную? (Компилировали ли C++-код перед работай с реалплексором? если нет, то перловую, значит.)
Перловую.
Причем количество каналов не имеет значение, как я писал выше - проблема проявляется и при 2 каналах и при 9. Обновляется только тот, в котором указан курсор.
Примечательно, что в коде курсор не устанавливается, откуда он берется и почему только для одного канала непонятно.

ОС: CentOS 5.8, x86_64
realplexor: перловый, "из коробки". За nginx-ом.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu Jun 07, 2012 10:07 pm (спустя 17 часов 29 минут; написано за 2 минуты 37 секунд)
   Post subject:
Reply with quote

А вы попробуйте на JS установить курсор для всех каналов, посмотрите, поможет ли.

Вообще, если курсор не указан, то считается, что он равен текущему времени:
https://github.com/DmitryKoterov/dklab_realplexor/blob/master/Realplexor/Common.pm#L79

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

Было бы еще интересно посмотреть, какой у вас на сервере код, как вы вызываете на сервере $rpl->send().
Back to top
View user's profile Send private message Send e-mail
pr0tect0r
Заглянувший



Joined: 06 Jun 2012
Posts: 7
Карма: 0
   поощрить/наказать


PostPosted: Fri Jun 08, 2012 4:39 am (спустя 6 часов 32 минуты; написано за 8 минут 49 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
А вы попробуйте на JS установить курсор для всех каналов, посмотрите, поможет ли.

Вообще, если курсор не указан, то считается, что он равен текущему времени:
https://github.com/DmitryKoterov/dklab_realplexor/blob/master/Realplexor/Common.pm#L79

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

Было бы еще интересно посмотреть, какой у вас на сервере код, как вы вызываете на сервере $rpl->send().
Я написал выше, что установка курсора для каждого канала решает проблему. Курсор устанавливаю PHP при генерации страницы, т.е.:
Code (php): скопировать код в буфер обмена
."comet.setCursor('".$qr[sname]."','.microtime(true).');"
."comet.subscribe('".$qr[sname]."', function (msg, id){\n"
Таким образом, время курсора серверное.
Есть подозрение, что проблема может крыться в разнице времени между клиентом и сервером (часовой пояс?), сегодня попробую проверить.

Отправка данных в канал:
Code (php): скопировать код в буфер обмена
$rpl->send($chanel, $data);
где chanel - id канала, data - массив данных.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Jun 08, 2012 8:32 pm (спустя 15 часов 52 минуты; написано за 42 секунды)
   Post subject:
Reply with quote

Какой-то код подозрительный:
Code (php): скопировать код в буфер обмена
."comet.setCursor('".$qr[sname]."','.microtime(true).');"
точно не должно быть так:
Code (php): скопировать код в буфер обмена
."comet.setCursor('".$qr[sname]."',".microtime(true).");"
?
Back to top
View user's profile Send private message Send e-mail
pr0tect0r
Заглянувший



Joined: 06 Jun 2012
Posts: 7
Карма: 0
   поощрить/наказать


PostPosted: Sat Jun 09, 2012 5:41 am (спустя 9 часов 9 минут; написано за 1 минуту 39 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Какой-то код подозрительный:
В скрипте ковычки правильно стоят. Здесь руками недоправил.
Back to top
View user's profile Send private message
Maximaka
Заглянувший



Joined: 05 Jul 2012
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Thu Jul 05, 2012 2:46 pm (спустя 26 дней 9 часов 4 минуты; написано за 12 минут 25 секунд)
   Post subject:
Reply with quote

Возможно ли ограничить пользователей от прослушивания канала (пускать только авторизированных - вошедших в систему сайта)?
Я представляю себе ето так:
1) Подключение к серверу.
2) Сервер запускает PHP скрипт для проверки пользователя на вход на сайт и разрешения слушать определённый канал текущим пользователем.
3) После работы скрипт возвращает массив с каналами на которые нужно подписать клиент.
   Пример JSON: ['ch1','ch2','ch5']
4) А далее Realplexor либо отключает слушателя либо "делает свою работу".
   (если вернулся пустой массив то отключить клиент иначе подписать на каналы в массиве)


(почти доделал весь функционал. Нужна помощь разработчика (плохо разбираюсь в perl))
Back to top
View user's profile Send private message
bitrop
Заглянувший



Joined: 23 Jul 2012
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Mon Jul 23, 2012 4:30 pm (спустя 18 дней 1 час 43 минуты; написано за 1 минуту 10 секунд)
   Post subject: Проблемы с установкой dklab_realplexor
Reply with quote

Устанавливаю по инструкции

cd /opt
wget github.com/DmitryKoterov/dklab_realplexor/tarball/master
tar zxf *realplexor*.tar.gz
mv *realplexor*/ dklab_realplexor

# Now deal with an init-script.
ln -s /opt/dklab_realplexor/dklab_realplexor.init /etc/init.d/dklab_realplexor
chkconfig --add dklab_realplexor
chkconfig dklab_realplexor on
service dklab_realplexor start


На строке chkconfig --add dklab_realplexor выдает ошибку Нет такого файла, каталога

Создал, поставил chmod 0777 insserv выдает ошибку

root@dk-pc:/sbin# chkconfig --add dklab_realplexor
/sbin/insserv: Отказано в доступе
dklab_realplexor 0:off 1:off 2:off 3:off 4:off 5:off 6:off

В чем может быть проблема?
Спасибо
Back to top
View user's profile Send private message
Davinchi_
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Jul 26, 2012 3:15 pm (спустя 2 дня 22 часа 44 минуты; написано за 3 минуты 16 секунд)
   Post subject: dklab_realplexor и фреймы
Reply with quote

Последние версии популярных браузеров блокируют фрейм, в который грузится канал, от остальных фреймов и фреймсета .
То есть, во фрейме в который грузится канал все прекрасно работает, но если попытаться передать/получить данные из фрейма с плексором в другой/из другого фрейма в том же домене, то возникает ошибка "SCRIPT5: Отказано в доступе."
Пример: данные передаются/забираются
Code (JavaScript): скопировать код в буфер обмена
var text=top.document.getElementById("send").contentWindow.document.getElementById("input_message").value;
в данном случае я хочу получить значение поля в другом фрейме
Подскажите пожалуйста как устранить данную ошибку?
Back to top
Davinchi_
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Jul 26, 2012 3:46 pm (спустя 30 минут; написано за 34 секунды)
   Post subject: dklab_realplexor и фреймы
Reply with quote

Помогло во всех фреймах прописать
Code (JavaScript): скопировать код в буфер обмена
document.domain = 'mydomen.ru';
Back to top
BRILok
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Aug 09, 2012 9:06 am (спустя 13 дней 17 часов 20 минут; написано за 4 минуты 38 секунд)
   Post subject: Вопросик
Reply with quote

Спасибо автору данной разработки. Есть пара вопросов.

За одно соединение можно получить информацию только по 1-у каналу? =(
Можно ли "одновременно" (в кавычках потому-что почти одновременно) послать сообщение в 2 канала и получить их одному клиенту.
Code (php): скопировать код в буфер обмена
$comet->send(Array (www.php.net/array)('phone'), 'Звонок!');
//sleep(0.01); //если слипа нет по второе сообщение не приходит
$comet->send(Array (www.php.net/array)('phone'), 'Приглашение!');
Потребность в этом есть. Вдруг сообщения будут посланы почти одновременно. получается что дойдет только 1-ое.
Back to top
Guest






Карма: 388
   поощрить/наказать


PostPosted: Thu Aug 09, 2012 9:11 am (спустя 4 минуты; написано за 6 минут 30 секунд)
   Post subject: Re: Вопросик
Reply with quote

BRILok wrote:
Спасибо автору данной разработки. Есть пара вопросов.

За одно соединение можно получить информацию только по 1-у каналу? =(
Можно ли "одновременно" (в кавычках потому-что почти одновременно) послать сообщение в 2 канала и получить их одному клиенту.
Code (php): скопировать код в буфер обмена
$comet->send(Array (www.php.net/array)('phone'), 'Звонок!');
//sleep(0.01); //если слипа нет по второе сообщение не приходит
$comet->send(Array (www.php.net/array)('phone'), 'Приглашение!');
Потребность в этом есть. Вдруг сообщения будут посланы почти одновременно. получается что дойдет только 1-ое.
Имелось в введу конечно, что данные различны.
В идеале хотелось бы иметь метод аля
Code (php): скопировать код в буфер обмена
$comet->send(Array (www.php.net/array)('phone'), '!');
$comet->send(Array (www.php.net/array)('phone'), '!');
$comet->execute(); //
 
Back to top
BRILok
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Aug 09, 2012 9:13 am (спустя 2 минуты; написано за 1 минуту 7 секунд)
   Post subject:
Reply with quote

блин, поспешил там должно быть 2 разных канала. phone и invite допустим
Back to top
LInfo
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Sep 12, 2012 12:35 pm (спустя 1 месяц 3 дня 3 часа 21 минуту; написано за 3 минуты 49 секунд)
   Post subject:
Reply with quote

Добрый день!

Хочу поделиться одной проблемой, которую решил, но в интернете не мог нигде найти решение.

Данные: nginx + php-fpm

Установил dklab_realplexor, все работало, однако? через некоторое количество сообщений - сообщения от сервера перестают приходить.
На что уже не плевался и не изменял.

Оказывается виноват в этом установленный вместе с nginx модуль naxsi. Он предотвращает от множественных запросов. Так вот в нашем случае его надо удалить из описания домена rt.domain.com и все будет замечательно.

Надеюсь я не продублировал уже решение данного вопроса.

Спасибо за внимание
Back to top
Stanislav.K
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Oct 14, 2012 8:59 pm (спустя 1 месяц 2 дня 8 часов 24 минуты; написано за 9 минут 6 секунд)
   Post subject:
Reply with quote

Всем привет,
Использую C++ версию, конфиг стандартный. Столкнулся с проблемой - теряются сообщения когда шлешь в несколько каналов одновременно.

Подписываюсь на каналы как в мануале.
Code (JavaScript): скопировать код в буфер обмена
var realplexor = new Dklab_Realplexor("http://plextor.plext.com/", "comet_");

realplexor.subscribe("alpha", function(data, id, cursor) {
    $(".log").append("<p>alpha: " + data + "</p>");
});
realplexor.subscribe("beta", function(data, id, cursor) {
  $(".log").append("<p>beta: "+ data + "</p>");
});

realplexor.execute();
Если слать в 1 канал то все работает отлично а если в разные, то начинают терятся сообщения, например
Code (php): скопировать код в буфер обмена
$realplexor = new Dklab_Realplexor("plextor.plext.com", "10010", "comet_" );

for($i = 0; $i<15 ;$i++) {
    $realplexor->send("alpha", "Сообщение - ".($i+1));
}

$realplexor->send(array (www.php.net/array)("alpha","beta"), "Тест 2 каналов");
$realplexor->send("alpha", "Сообщение в aplha");
$realplexor->send("beta", "Сообщение в beta");
В alpha канал приходят все. в beta не приходит не одного сообщения.
Если перед отправкой в alpha отправить собщение в beta например:
Code (php): скопировать код в буфер обмена
$realplexor->send("beta", "Сообщение в beta 1");

for($i = 0; $i<15 ;$i++) {
    $realplexor->send("alpha", "Сообщение - ".($i+1));
}

$realplexor->send(array (www.php.net/array)("alpha","beta"), "Тест 2 каналов");
$realplexor->send("alpha", "Сообщение в aplha");
$realplexor->send("beta", "Сообщение в beta 2");
То в beta приходят все сообщения, но начинают теряться сообщения в alpha отправленные в цикле (примерно половина).

Проблемы нет вообще, если после каждой отправки в канал делать sleep(1), но это не подходит.

Вопрос, куда копать?
Back to top
Stanislav.K
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Oct 14, 2012 9:27 pm (спустя 27 минут; написано за 1 минуту 39 секунд)
   Post subject:
Reply with quote

Еще выяснилось что проблема только при первой отправке сообщений, если повторно вызывать php скрипт с отправкой и не обновлять страницу которая подписана на сообщения, то все отлично доходит.
Дело в курсорах или что-то другое?
Back to top
Stanislav.K
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Oct 15, 2012 6:04 am (спустя 8 часов 37 минут; написано за 58 секунд)
   Post subject:
Reply with quote

В общем вроде решилось (еще тестирую), да, дело было в курсорах.
Back to top
advocot
Заглянувший



Joined: 10 Oct 2012
Posts: 12
Карма: 1
   поощрить/наказать


PostPosted: Thu Oct 18, 2012 5:42 pm (спустя 3 дня 11 часов 38 минут; написано за 8 минут 42 секунды)
   Post subject:
Reply with quote

А как быть с ограничением доступа? Ничто не мешает мне открыть исходный код страницы и вставить самому строчку "realplexor.subscribe(...)". И всё? Я "гений" хакер? Или я что-то не заметил?
А может это понадобиться много где. Например обычный чат с несколькоми каналами. И есть канал админов, где админы пишут ооосень секретную инфу. Допустим название канала сложное, а не просто "admin". А что, если я раньше имел доступ к этому каналу и знаю, что его настоящее название "dh3b19s3476srtg67s3gnr9234"? Ограничить отправку сообщений в этот канал - не проблема. Ну а получать сообщения может по сути любой юзер.
Ну или это канал приватных сообщений.
оффтоп: Кстати подскажите, как лучше быть с приватом. Я сначала думал просто назвать канал как-то 102.543(102 и 543 - это айдишники юзеров в бд), но потом подумал...и не помогло :)

UPD: помню про это:
Quote:
$rpl->send("Alpha", "any data", array($id1, $id2, ...));
Но не скажется ли это на производительности или задержке при получении?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page Previous  1, 2, 3 ... 8, 9, 10, 11  Next
Page 9 of 11    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

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

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML