Wpis z mikrobloga

Piszę sobie apkę w #rubyonrails i muszę zrobić system powiadomień (coś jak na fb, wypoku itd.). No i niby nie ma w tym filozofii, robimy model, w którym trzymamy powiadomienie i wyświetlamy użytkownikowi jego powiadomienia. Ale co w momencie, gdy chcę, aby takie powiadomienia były w miarę na bieżąco wyświetlane docelowemu użytkownikowi. Jak to rozwiązać? Wysyłać requesta sprawdzającego, czy użytkownik ma nieprzeczytane powiadomienia co kilka sekund? Nie zabije to serwera? Czy jest jakieś inne sprytne rozwiązanie (ale kompatybilne ze starszymi przeglądarkami, tak przynajmniej do IE8)?

#webdev #ruby zawołam też #jquery #javascript
  • 9
@gergu:

Wysyłać requesta sprawdzającego, czy użytkownik ma nieprzeczytane powiadomienia co kilka sekund?


Dokładnie tak. Możesz co np. 20-30, nie musisz co kilka.

Nie zabije to serwera?


Jeśli zrobisz to sprytnie (tzn. w odpowiedzi na niego nie będziesz zbyt dużo kombinował) to nie.
@gergu: powiadomienia niech będą serwowane cache'a.

1. request przeglądarki -

notifications.php
(sprawdzanie np. tylko czy jest ustawiony userid w cookies)

2. notifications.php - sprawdza czy istnieje plik

/.notifications/user_id.json
3. istnienie pliku powoduje sprawdzenie, czy user jest aby na pewno zalogowany (tylko w tym momencie używana jest baza danych)

Brak pliku oznacza brak powiadomień.

4. jeśli jest zalogowany, to

/.notifications/user_id.json
zostaje przekazany do przeglądarki

- odczytanie (ale raczej nie samo wyświetlenie)