Czy z tej strony HTTPS mogę przetestować ws://localhost albo serwer w sieci LAN?
To zależy od przeglądarki (stan na październik 2026). Chrome 147 i nowsze traktują połączenia WebSocket z komputerem użytkownika lub siecią lokalną jako dostęp do sieci lokalnej: za pierwszym razem pytają, czy zezwolić tej witrynie, a po wybraniu „Zezwól” połączenia z ws://localhost, ws://127.0.0.1 i ws:// na adres IP w sieci LAN, np. 192.168.1.10, działają. W Chrome serwer w sieci LAN trzeba podać jako adres IP; zwykła nazwa hosta (inna niż .local) jest blokowana, nawet jeśli wskazuje na adres w sieci lokalnej. Firefox łączy się z localhost bezpośrednio, ale blokuje ws:// do adresów w sieci LAN. Safari blokuje ws:// do localhost i sieci LAN ze stron HTTPS. wss:// nie podlega regule mixed content: publiczne serwery działają z tej strony w każdej przeglądarce, o ile certyfikat jest zaufany; w przypadku adresów localhost lub w sieci LAN Chrome także tutaj najpierw prosi o zgodę na dostęp do sieci lokalnej.
Dlaczego nie mogę połączyć się z ws://example.com z tej strony?
Ta strona jest serwowana przez HTTPS, a przeglądarki blokują nieszyfrowane połączenie ws:// do publicznego hosta ze strony HTTPS (mixed content). Chrome i Firefox od razu odmawiają z błędem SecurityError, który narzędzie zgłasza. Użyj adresu wss:// serwera. Publicznych stron serwowanych przez zwykłe http ta reguła nie dotyczy, ale w nowszym Chrome w ogóle nie mogą one połączyć się z localhost ani z siecią LAN.
Połączenie zakończyło się kodem 1006 — co poszło nie tak?
1006 oznacza tylko, że połączenie zakończyło się bez handshake'u zamykającego. Gdy handshake się nie powiedzie, standard WebSocket wymaga, aby przeglądarka ukryła przyczynę przed stroną — 401, 404, odrzucony port, błąd certyfikatu i odrzucony Origin wyglądają identycznie (Firefox zgłasza błędy certyfikatu jako 1015) — więc żaden tester internetowy, który łączy się bezpośrednio z przeglądarki, nie może jej pokazać. Naciśnij F12 i otwórz konsolę: Chrome i Edge wypisują status HTTP zwrócony przez serwer. Narzędzie odróżnia też błędy przed otwarciem połączenia od zerwań po jego otwarciu i dla każdego przypadku wymienia typowe przyczyny.
Czy mogę dodać nagłówek Authorization lub inny własny nagłówek?
Nie. API WebSocket w przeglądarce nie pozwala stronom ustawiać nagłówków żądania; przeglądarka wysyła stały zestaw (w tym Origin i ciasteczka dla własnej witryny serwera). Typowe obejścia, zależnie od tego, co obsługuje serwer: token w URL, np. wss://host/ws?token=…; token przekazany jako podprotokół (dozwolone są tylko znaki z klasy token, więc JWT działa, ale standardowy Base64 ze znakami = lub / już nie, a serwer musi odesłać podprotokół); albo ciasteczko, które przeglądarki niezawodnie wysyłają tylko do witryny samej strony, więc z tej strony zwykle nie dotrze do serwera. Narzędzia takie jak Postman mogą ustawiać nagłówki, bo nie są przeglądarkami.
Dlaczego w narzędziu Postman działa, a tutaj nie?
Postman i klienty wiersza poleceń mogą ustawić dowolny nagłówek i zwykle nie wysyłają Origin. Przeglądarka nie może dodać nagłówka Authorization i zawsze wysyła Origin: https://go-tools.org. Jeśli serwer oczekuje, że token przyjdzie w nagłówku, albo sprawdza Origin, odrzuca handshake przeglądarki; dopuść ten Origin albo przekaż token w inny sposób.
Czy heartbeat wysyła ramki ping WebSocket?
Nie. Strony internetowe nie mogą ani wysyłać, ani widzieć ramek ping/pong na poziomie protokołu; gdy serwer wysyła ping, przeglądarka sama odpowiada pongiem. Wysyłanie cykliczne wysyła tu zwykłą wiadomość tekstową, np. {"type":"ping"}, w ustawionym odstępie. Domyślnie jest wyłączone, bo serwer, który nie oczekuje takiej wiadomości, może zamknąć połączenie. Aby bezczynne połączenie przetrwało przez proxy, niech pingi wysyła serwer.
Dlaczego nie mogę połączyć się z moim serwerem Socket.IO?
Socket.IO to protokół działający na WebSocket, a nie czysty WebSocket. Serwer Socket.IO v3/v4 oczekuje ścieżki /socket.io/?EIO=4&transport=websocket, wysyła pakiet open zaczynający się od 0, oczekuje 40, aby dołączyć klienta do domyślnej przestrzeni nazw, i zamyka połączenie, jeśli na każdy ping 2 nie dostanie odpowiedzi pong 3. Wybierz protokół Socket.IO, a narzędzie zrobi to wszystko; potem wysyłaj zdarzenia jako 42["event","data"]. Serwery skonfigurowane wyłącznie na HTTP long-polling w ogóle nie przyjmą połączenia WebSocket.
Połączenie zrywa się po mniej więcej minucie — dlaczego?
Zwykle winny jest limit bezczynności w reverse proxy. Nginx domyślnie zamyka przekazywane połączenie, gdy przez 60 sekund nie płyną żadne dane (proxy_read_timeout), a strona widzi kod 1006. Zwiększ limit albo niech serwer wysyła ramki ping. Za Nginx upewnij się też, że proxy przekazuje upgrade dzięki proxy_set_header Upgrade $http_upgrade; i proxy_set_header Connection "upgrade"; (przed Nginx 1.29.7 także proxy_http_version 1.1;).
Jak połączyć się z serwerem wss:// z certyfikatem samopodpisanym?
Otwórz https://ten-sam-host:port/ w nowej karcie, zaakceptuj ostrzeżenie o certyfikacie, a potem wróć i połącz się. Przeglądarka zapamięta wyjątek dla tego hosta i portu. Rób to tylko dla własnych serwerów testowych, bo obniża to ochronę zapewnianą przez przeglądarkę.
Jak wysyłać i odczytywać wiadomości binarne?
Jako format wysyłania wybierz HEX lub Base64. HEX przyjmuje 48 69 00 FF, 0x48,0x69 lub 486900FF; podgląd pokazuje bajty, a nieprawidłowe znaki lub nieparzysta liczba cyfr są zgłaszane wraz z pozycją, zamiast zostać wysłane. Odebrane wiadomości binarne są wyświetlane jako HEX, po 16 bajtów w wierszu, a pasek narzędzi logu przełącza je na Base64. Aby odczytać odebrany HEX jako tekst, wklej go do narzędzia Hex na tekst. Czy moje wiadomości przechodzą przez serwery go-tools?
Nie. Przeglądarka łączy się bezpośrednio z wpisanym adresem, a wiadomości nie przechodzą przez nasze serwery. Narzędzie nie otwiera też żadnego połączenia WebSocket, dopóki nie klikniesz „Połącz”, a adres i wiadomości przechowuje tylko w pamięci — nie w adresie URL strony ani w pamięci przeglądarki. Jak cały serwis ta strona ładuje skrypty analityczne i reklamowe.
Czy jest serwer, na którym mogę testować?
Użyj lokalnego echa: działa wewnątrz tej strony, odsyła wszystko, co wyślesz, i nie nawiązuje żadnego połączenia sieciowego. Istnieją też publiczne usługi echo, np. wss://echo.websocket.org/, ale należą do podmiotów trzecich: ich dostępność nie jest gwarantowana, a wiadomości trafiają do tego podmiotu trzeciego.