Obecnie pracuję z WebSocket i serwera PHP: działa bardzo dobrze z Google Chrome i Opera, ale nie w Firefoksie 6.JavaScript i WebSockets: przy użyciu określonego protokołu
myślę, że to ze względu na wersji protokołu ten ostatni używa: widzę gdzieś, że używa siódmej wersji, podczas gdy jest starsza dla Google Chrome i Opery.
Więc mój zmodyfikowany kod serwera w celu zarządzania nowej wersji: od mieszania bezpieczny klucz z 258EAFA5-E914-47DA-95CA-C5AB0DC85B11 i innych pasz, Firefox uda się połączyć. Ale jeśli inny klient chce się połączyć (nawet inny Firefox), pierwszy z Firefoxem sam się rozłącza.
Widziałem, że bufor otrzymanych przez socket_recv() jest albo pusta lub mieszany ...
więc postanowiłem pominąć idei zarządzania protokół używany przez Firefoksa 6 (nie istnieją żadne dokumenty w Internecie ... !): Myślę, że łatwiej byłoby określić protokół do użycia bezpośrednio w JavaScript.
Na this page mówią, że możemy napisać tak:
var mySocket = new WebSocket("http://www.example.com/socketserver", "my-custom-protocol");
Ale co powinniśmy napisać zamiast „moja-custom-protocol” w celu korzystania z protokołu zarządzanej przez Google Chrome i Opera?
Z góry dziękuję!
Istnieje wersja "hybi-00", która jest również nazywana 'hixie-76' i zawiera dwa klucze binarne. Istnieje również nowy "hybi-07", który wykorzystuje ten bezpieczny klucz, który opublikowałeś. Będziesz musiał wygenerować poprawny uścisk dłoni w zależności od wersji, której dotyczy żądanie * uzgadniania *. Ponieważ obie wersje używają różnych nazw nagłówków dla kluczy, powinno to być możliwe. – pimvdb
Dzięki za odpowiedź! Więc próbowałem tego: 'var mySocket = new WebSocket (" http://www.example.com/socketserver "," hybi-00 ");' ale nagłówek wysyłany przez Firefoksa jest wciąż taki sam ... Jedyną różnicą jest teraz _Sec-WebSocket-Protocol: hybi-00_ w nagłówku, ale nadal używa siódmej wersji. – KorHosik
Myślę, że nie byłem w pełni jasny. Każda przeglądarka wysyła jedną z wersji i nie można jej kontrolować. Na serwerze można jednak sprawdzić, która wersja została wysłana i odpowiednio zareagować (tj. Prawidłowa odpowiedź uzgadniania). – pimvdb