Yii Framework Forum: Jakie jest najlepsze rozwiązanie? [PUSH] - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Jakie jest najlepsze rozwiązanie? [PUSH] Rate Topic: -----

#1 User is offline   lograiden 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 11-November 11
  • Location:Poland

Posted 29 December 2011 - 12:31 AM

Cześć, mam następujący problem:
Użytkownik z poziomu strony łączy się z systemem eksperckim działającym na innym serwerze (tylko po autoryzacji ma możliwość nawiązania połączenia). Komunikacja z systemem eksperckim wygląda tak że użytkownik udziela odpowiedzi na pytania wysyłane przez system i na podstawie jego odpowiedzi podaje on wynik w czasie rzeczywistym... Używam w tym celu technologii PUSH...

  • Najpierw użyłam metody 'long-polling', ale w niej skrypt php był wywoływany wielokrotnie, co powodowało zrywanie połączenie...
  • Obecnie zaimplementowałam to używając 'Server Sent Events' - połączenie jest trzymane do odświeżenia strony, ale komunikacja jest jednokierunkowa (z systemu na stronę)...
  • Obecnie więc się skłaniam do wykorzystania WebSockets (stałe połączenie, dwu-kierunkowe), ale implikuje to konieczność implementacji (lub wykorzystania czyjejś) serwera do WebSocket po stronie systemu (w C lub PHP)...


Więc, jak byście Wy rozwiązali ten problem? Utrzymywać połączanie z serwerem? Czy może łączyć się za każdym razem przed wysłaniem wiadomości? Może macie jakąś lepszą metodę?

Z góry dzięki :)
0

#2 User is offline   Mariusz W. 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 15-December 11
  • Location:Poland/Warsaw

Posted 29 December 2011 - 02:44 AM

A może wykorzystać po prostu AJAX? powinno się sprawdzić :-)
Jeżeli zależy Ci na stałym połączeniu to może napisz jakiś mały aplet w Javie... Wtedy jeszcze potrzeba aplikacji po stronie serwera, która będzie obsługiwała połączenia socketowe.
Stale połączenia sa zazwyczaj potrzebne do strumieni danych dlatego jeżeli zależy nam na krótkiej odpowiedzi to zapytanie w tle do skryptu ph z poziomu javascript powinno wystarczyć.
Różnica w czasie pomiędzy technologia AJAX a trzymaniem stałego połączenia jest niewielka w tym przypadku.
Posted Image
Posted Image
1

#3 User is offline   lograiden 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 11-November 11
  • Location:Poland

Posted 29 December 2011 - 05:25 PM

View PostMariusz W., on 29 December 2011 - 02:44 AM, said:

A może wykorzystać po prostu AJAX? powinno się sprawdzić :-)
Jeżeli zależy Ci na stałym połączeniu to może napisz jakiś mały aplet w Javie... Wtedy jeszcze potrzeba aplikacji po stronie serwera, która będzie obsługiwała połączenia socketowe.
Stale połączenia sa zazwyczaj potrzebne do strumieni danych dlatego jeżeli zależy nam na krótkiej odpowiedzi to zapytanie w tle do skryptu ph z poziomu javascript powinno wystarczyć.
Różnica w czasie pomiędzy technologia AJAX a trzymaniem stałego połączenia jest niewielka w tym przypadku.


Aplet w Javie był by dobrym rozwiązaniem, ale wiszą nade mną wymagania projektowe i nie mogę jej użyć. No zrealizowałam wersję w której puszczam zapytanie do skryptu za pomocą API XMLHttpRequest, ale potem doszłam do wniosku że lepsze będzie stałe połączenie. Masz rację że w tym wypadku nie będzie dużej różnicy w czasie odpowiedzi, ale wolałam uniknąć tego rozwiązania, bo szczerze mówiąc nie wiem na ile mogę obciążyć back-end na którym mam system ekspercki (to rozwiązanie ma być wdrożone), a to pogorszy skalowalność...

Dzięki za radę, w sumie teraz bardziej się skłaniam do tego żeby dopisać kod w C na back-end'zie do serwera tak żeby sobie radził z tym ciągły łączeniem się i rozłączaniem użytkowników...
0

#4 User is offline   drylko 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 86
  • Joined: 13-September 09
  • Location:Poland

Posted 10 January 2012 - 04:48 PM

View Postlowliet, on 29 December 2011 - 05:25 PM, said:

Aplet w Javie był by dobrym rozwiązaniem, ale wiszą nade mną wymagania projektowe i nie mogę jej użyć. No zrealizowałam wersję w której puszczam zapytanie do skryptu za pomocą API XMLHttpRequest, ale potem doszłam do wniosku że lepsze będzie stałe połączenie. Masz rację że w tym wypadku nie będzie dużej różnicy w czasie odpowiedzi, ale wolałam uniknąPubSubć tego rozwiązania, bo szczerze mówiąc nie wiem na ile mogę obciążyć back-end na którym mam system ekspercki (to rozwiązanie ma być wdrożone), a to pogorszy skalowalność...

Dzięki za radę, w sumie teraz bardziej się skłaniam do tego żeby dopisać kod w C na back-end'zie do serwera tak żeby sobie radził z tym ciągły łączeniem się i rozłączaniem użytkowników...


Cześć,
nie ma raczej "najlepszego" rozwiązania :) a jeśli chodzi o aplet w Javie, to właśnie po to powstają technologie typu comet, żeby nie trzeba było robić takich rzeczy...
Jakiego rozwiązania próbowałaś implementując long-polling?

Słyszałem pozytywne opinie na temat APE (Ajax Push Engine).
Może implementacja long-polling w node.js?
XMPP + BOSH z PubSub lub PEP

Powodzenia
0

#5 User is offline   lograiden 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 11-November 11
  • Location:Poland

Posted 11 January 2012 - 05:06 PM

Zrealizowałam long-polling za pomocą AJAX'owego zapytania (GET) puszczanego do skryptu PHP (wykorzystując jQuery.ajax()). PubSub i PEP nie znałam, na pewno sprawdzę te rozwiązania.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users