Bisakah saya menguji ws://localhost atau server LAN dari halaman HTTPS ini?
Tergantung browser (per Oktober 2026). Chrome 147 ke atas memperlakukan koneksi WebSocket ke komputer Anda atau jaringan lokal sebagai akses jaringan lokal: pada kali pertama, Chrome bertanya apakah situs ini diizinkan, dan setelah Anda memilih Izinkan, ws://localhost, ws://127.0.0.1, dan ws:// ke alamat IP LAN seperti 192.168.1.10 bisa terhubung. Di Chrome, server LAN harus ditulis sebagai alamat IP; nama host biasa (selain .local) tetap diblokir meskipun mengarah ke jaringan Anda. Firefox langsung terhubung ke localhost tetapi memblokir ws:// ke alamat LAN. Safari memblokir ws:// ke localhost dan LAN dari halaman HTTPS. wss:// tidak terkena aturan mixed content: server publik bisa dijangkau dari halaman ini di semua browser selama sertifikatnya dipercaya; untuk alamat localhost atau LAN, Chrome tetap meminta izin jaringan lokal lebih dulu di sini juga.
Kenapa saya tidak bisa terhubung ke ws://example.com dari halaman ini?
Halaman ini disajikan lewat HTTPS, dan browser memblokir koneksi ws:// tanpa enkripsi ke host publik dari halaman HTTPS (mixed content). Chrome dan Firefox langsung menolak dengan SecurityError, dan alat ini melaporkannya. Gunakan alamat wss:// milik server. Situs publik yang disajikan lewat http biasa tidak terkena aturan ini, tetapi di Chrome versi terbaru situs seperti itu sama sekali tidak bisa menjangkau localhost atau LAN Anda.
Koneksi gagal dengan kode 1006 — apa yang salah?
1006 hanya berarti koneksi berakhir tanpa closing handshake. Saat handshake gagal, standar WebSocket mewajibkan browser menyembunyikan penyebabnya dari halaman — 401, 404, port yang ditolak, error sertifikat, dan Origin yang ditolak semuanya terlihat identik (Firefox melaporkan error sertifikat sebagai 1015) — sehingga tidak ada penguji web yang terhubung langsung dari browser yang bisa menampilkannya. Tekan F12 dan buka Console: Chrome dan Edge mencetak status HTTP yang dikembalikan server. Alat ini juga memisahkan kegagalan sebelum koneksi terbuka dari koneksi yang putus setelah terbuka, dan mencantumkan penyebab umum masing-masing.
Bisakah saya menambahkan header Authorization atau header kustom lain?
Tidak. API WebSocket di browser tidak mengizinkan halaman web mengatur header permintaan; browser mengirim sekumpulan header tetap (termasuk Origin dan cookie untuk situs milik server itu sendiri). Solusi umum, tergantung apa yang didukung server Anda: token di URL, seperti wss://host/ws?token=…; token yang dikirim sebagai subprotokol (hanya karakter token yang diizinkan, jadi JWT bisa, tetapi Base64 standar dengan = atau / tidak, dan server harus mengembalikan subprotokol itu); atau cookie, yang hanya dikirim browser secara andal ke situs milik halaman itu sendiri, sehingga dari halaman ini biasanya tidak sampai ke server Anda. Alat seperti Postman bisa mengatur header karena bukan browser.
Kenapa berhasil di Postman tetapi tidak di sini?
Postman dan klien command line bisa mengatur header apa pun dan biasanya tidak mengirim Origin. Browser tidak bisa menambahkan header Authorization dan selalu mengirim Origin: https://go-tools.org. Jika server membutuhkan token di header atau memeriksa Origin, server menolak handshake dari browser; izinkan Origin tersebut atau kirim token dengan cara lain.
Apakah heartbeat mengirim frame ping WebSocket?
Tidak. Halaman web tidak bisa mengirim maupun melihat frame ping/pong di level protokol; saat server mengirim ping, browser menjawabnya dengan pong secara otomatis. Kirim berkala di sini mengirim pesan teks biasa, seperti {"type":"ping"}, pada interval yang Anda tetapkan. Fitur ini nonaktif secara default karena server yang tidak mengharapkan pesan itu bisa menutup koneksi. Untuk menjaga koneksi idle tetap hidup melewati proxy, buat server yang mengirim ping.
Kenapa saya tidak bisa terhubung ke server Socket.IO saya?
Socket.IO adalah protokol di atas WebSocket, bukan WebSocket biasa. Server Socket.IO v3/v4 mengharapkan path /socket.io/?EIO=4&transport=websocket, mengirim paket open yang diawali 0, mengharapkan 40 untuk bergabung ke namespace default, dan menutup koneksi jika setiap ping 2 tidak dijawab dengan pong 3. Pilih Socket.IO v3/v4 di kolom Protokol dan alat ini menangani semuanya; lalu kirim event sebagai 42["event","data"]. Server yang dikonfigurasi hanya untuk HTTP long-polling sama sekali tidak menerima WebSocket.
Koneksi saya putus setelah sekitar satu menit — kenapa?
Biasanya karena idle timeout di reverse proxy. Secara default Nginx menutup koneksi yang di-proxy jika tidak ada data lewat selama 60 detik (proxy_read_timeout), dan halaman melihat kode 1006. Naikkan timeout-nya atau buat server mengirim frame ping. Di balik Nginx, pastikan juga proxy meneruskan upgrade dengan proxy_set_header Upgrade $http_upgrade; dan proxy_set_header Connection "upgrade"; (sebelum Nginx 1.29.7, tambahkan juga proxy_http_version 1.1;).
Bagaimana cara terhubung ke server wss:// dengan sertifikat self-signed?
Buka https://host-yang-sama:port/ di tab baru, terima peringatan sertifikatnya, lalu kembali ke sini dan hubungkan. Browser mengingat pengecualian itu untuk host dan port tersebut. Lakukan ini hanya untuk server uji milik Anda sendiri, karena hal ini menurunkan perlindungan browser.
Bagaimana cara mengirim dan membaca pesan biner?
Pilih HEX atau Base64 sebagai format kirim. HEX menerima 48 69 00 FF, 0x48,0x69, atau 486900FF; pratinjau menampilkan byte-nya, dan karakter tidak valid atau jumlah digit ganjil dilaporkan beserta posisinya alih-alih dikirim. Pesan biner yang diterima ditampilkan sebagai HEX, 16 byte per baris, dan toolbar log bisa mengubahnya ke Base64. Untuk membaca HEX yang diterima sebagai teks, tempelkan ke Hex ke Teks. Apakah pesan saya melewati server go-tools?
Tidak. Browser Anda terhubung langsung ke alamat yang Anda masukkan, dan pesan tidak melewati server kami. Alat ini juga tidak membuka koneksi WebSocket apa pun sampai Anda menekan Hubungkan, dan alamat serta pesan hanya disimpan di memori — tidak di URL halaman atau penyimpanan browser. Seperti bagian lain situs ini, halaman ini memuat skrip analitik dan iklan.
Apakah ada server yang bisa saya pakai untuk menguji?
Gunakan echo lokal: echo ini berjalan di dalam halaman ini, memantulkan semua yang Anda kirim, dan tidak membuat koneksi jaringan. Layanan echo publik seperti wss://echo.websocket.org/ juga ada, tetapi itu layanan pihak ketiga: ketersediaannya tidak dijamin, dan pesan Anda dikirim ke pihak ketiga tersebut.