Wpis z mikrobloga

szukam informacji na temat użycia Redisa z #socketio na aplikacji pisanej w #nodejs

chciałbym wdrożyć pewną redundancję do mojej (obecnie) bardzo prostej aplikacji,
broadcastującej otrzymane wiadomości do podłączonych klientów lub pokojów
stan który chcę osiągnąć to kilka instancji/nodeów aplikacji broadcastującej,
które trzymają informacje o pokojach i podłączonych klientach na Redisie i kiedy jedna z nich pada pozostałe są w stanie kontynuować wysyłkę (taki najprostszy "system wysokiej niezawodności"/high availability system)
jak na razie wyszperałem https://github.com/socketio/socket.io-redis ,
jednak "żywy" przykład, nawet najprostszy, bardzo by mi pomógł

wszelkie udemy i codeacademy także mile widziane ;-)

#programowanie #javascript
  • 5
  • Odpowiedz
@qbek: masz jakis konkretny problem? Jak testowalem rozwiazanie to udalo mi sie to spiac w 10 min z dokumentacji :) wada bylo to ze jeden redis, nie wiem jak Ty chcesz to rozwiazac. Jesli wszystko w obrebie maszyny to nie powinienes miec problemu aby zbudowac prototyp :)
  • Odpowiedz
@kefas_safek: leciałeś z readme na githubie socket.io-redis ?
na razie nie przejmuję się Redisem, chciałbym tylko wprowadzić dodatkowe instancje node'owej (socketowej) aplikacji.

w jednym kontenerze Dockera siedzi Redis, w drugim aplikacja
wstępne konfigi wykonują się bez przeszkód, po samum podłączeniu adaptera przez

io.adapter(redis({ host: 'localhost', port: 6379 }));
nie widzę nic niepokojącego,
później io.of('/').adapter.remoteJoin([...]) żeby dołączyć do pokoju też przechodzi,
jednak już io.of('/').adapter.clients((err, clients) => {console.log(clients); });
zwraca mi wiecznie pustą
  • Odpowiedz
@qbek: teraz nie mam dostepu do kompa, jutro wieczorem najwczesniej przykladem moge poratowac. Ja robilem wedlug tego a konkretne uzycie za pomoca:

var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }))

Wtedy dziala to od razu. Kwestia tylko konfiguracji wielu apek, to nie trzeba koniecznie nginxa, ja akurat robilem nim ale haproxy tez daje rade (tez probowalem). Podejrzewam, ze apache tez dalbys rade :)

Co do
  • Odpowiedz
@kefas_safek: czyli jak po podłączeniu adaptera nie muszę, w standardowych przypadkach, w ogóle używać żadnych "dodatków" od io-redis, tzn przepisując stary kod?
poeksperymentuję z tematem

a gdybyś dostarczył ten przykład load balancingu (chętniej na haproxy, ale nginxa też obejrzę ;-) ) to będę wdzięczny
  • Odpowiedz
@qbek: tak jak mowie, jutro najwczesniej z przykladami. Co do kodu to totalnie nic nie zmieniasz, podpinasz adapter i juz :) na tym to polega. Ten load balancing (czy tam HA) troche uposledony bedzie bo nadal masz jednego redisa a go nie potrafie na razie sklastrowac. Tzn waskim gardlem bedzie tu redis ale jam z tym sie uporasz to jestes w domu :)
  • Odpowiedz