Archívum - Jan 6, 2014 - Fórum téma
WebSockets - oldalfrissítések lekezelése Firefoxban
Sziasztok! A kérdésemet specifikusan a Firefox böngészőhöz kapcsolnám, de valójában nem tudom, hogy Google Chrome-ban fenn áll-e ugyanaz a probléma, amire most a kérdésem vonatkozik, mert egyenlőre csak Firefoxban próbálkozom.
A kérdésem röviden:
hogyan a leghelyesebb lekezelni a websocketet kliens és szerver oldalon, ha a felhasználó lefrissíti a böngészőlapot?
A konkrét problémámat megpróbálom érthetően kifejteni:
1) Van USER1 és USER2, mindketten csatlakoznak egy WebSocket szerverhez (ami jelenleg PHP-ban van megírva).
2) Miután csatlakoztak felépítik egymást közt a peer-to-peer kapcsolatot és egy DataChannel-t, amely adatcsatornát egyszerű szöveges adatokat küldhetnek egymásnak.
3) Minden rendben van, a chat működik, MINDADDIG, amíg a szervert le nem állítom vagy amíg valamelyik felhasználó nem kéri a websocket bezárását. De ezen esetekben nincsen probléma, mert lefut a websocket onclose eseménye, és ezen esemény hatására küldök egy jelzést a szerverre, hogy "Zárd be az adott klienssel a kapcsolatot és vedd ki az adott kliens a socket felhasználókat tároló tömbből".
4) És itt jön a problémám: ha az egyik kliens lefrissíti vagy egyszerűen bezárja a böngészőlapot, akkor a websocket onclose esemény nem fut le. Ennek hatására nem küldődik el a szerver felé a jelzés, hogy záródjon be a kapcsolat és a szerveren lévő, a socket-okat tároló tömbből sem törlődik ki az adott kliens.
A kérdésem röviden:
hogyan a leghelyesebb lekezelni a websocketet kliens és szerver oldalon, ha a felhasználó lefrissíti a böngészőlapot?
A konkrét problémámat megpróbálom érthetően kifejteni:
1) Van USER1 és USER2, mindketten csatlakoznak egy WebSocket szerverhez (ami jelenleg PHP-ban van megírva).
2) Miután csatlakoztak felépítik egymást közt a peer-to-peer kapcsolatot és egy DataChannel-t, amely adatcsatornát egyszerű szöveges adatokat küldhetnek egymásnak.
3) Minden rendben van, a chat működik, MINDADDIG, amíg a szervert le nem állítom vagy amíg valamelyik felhasználó nem kéri a websocket bezárását. De ezen esetekben nincsen probléma, mert lefut a websocket onclose eseménye, és ezen esemény hatására küldök egy jelzést a szerverre, hogy "Zárd be az adott klienssel a kapcsolatot és vedd ki az adott kliens a socket felhasználókat tároló tömbből".
4) És itt jön a problémám: ha az egyik kliens lefrissíti vagy egyszerűen bezárja a böngészőlapot, akkor a websocket onclose esemény nem fut le. Ennek hatására nem küldődik el a szerver felé a jelzés, hogy záródjon be a kapcsolat és a szerveren lévő, a socket-okat tároló tömbből sem törlődik ki az adott kliens.