Skip to content

Tes WebSocket Online (Klien ws/wss)

Tes WebSocket di browser: biner tampil sebagai HEX, kirim frame biner asli dari HEX/Base64, lihat close code beserta alasan dan daftar periksa. Mendukung ws:// dan wss://. Pesan langsung ke server Anda, bukan lewat server kami.

Berjalan di Browser Gratis
Browser Anda mengirim pesan langsung ke server yang Anda masukkan — pesan tidak melewati server go-tools.
Isi contoh: (layanan echo pihak ketiga: ketersediaannya tidak dijamin, dan pesan Anda dikirim ke pihak ketiga tersebut)
Belum terhubung

Pesan muncul di sini. Tidak ada koneksi WebSocket yang dibuka sampai Anda menekan Hubungkan.

Kirim berkala (heartbeat aplikasi)
ms

Ini mengirim pesan teks biasa dengan timer. Ini bukan frame ping di level protokol — halaman web tidak bisa mengirim atau melihat frame ping/pong. Nonaktif secara default, karena server yang tidak mengharapkannya bisa menutup koneksi.

Koneksi, pesan teks dan biner, close code, kegagalan handshake, batas waktu koneksi, handshake Socket.IO, heartbeat, sambung ulang, dan banjir 10.000 pesan diuji end-to-end terhadap server WebSocket lokal; perilaku browser yang dijelaskan di halaman ini diukur di Chromium, Firefox, dan WebKit pada Oktober 2026. — Tim Go Tools · Oct 13, 2026

Dibangun dan diverifikasi oleh tim engineering Go Tools.

Jawaban cepat seputar tes WebSocket

Bisakah halaman HTTPS ini terhubung ke ws://localhost?

Bisa di Chrome setelah Anda mengizinkan akses jaringan lokal Tergantung browser (per Oktober 2026). Chrome 147 ke atas lebih dulu menanyakan apakah halaman boleh mengakses perangkat di jaringan lokal Anda; setelah Anda memilih Izinkan, ws://localhost dan ws:// ke alamat IP LAN bisa terhubung. Firefox langsung terhubung ke localhost tetapi memblokir alamat LAN. Safari memblokir ws:// dari halaman HTTPS.

Kenapa koneksi yang gagal hanya menampilkan 1006?

Browser menyembunyikan alasannya Saat handshake gagal, browser diwajibkan hanya memberi halaman event error dan close code 1006 — tidak pernah status HTTP atau alasannya. Tekan F12: konsol Chrome dan Edge menampilkan kode status yang dikembalikan server.

Bisakah saya menambahkan header Authorization?

Browser tidak bisa mengatur header Tidak. API WebSocket di browser tidak punya cara untuk mengatur header permintaan. Taruh token di parameter URL, subprotokol, atau cookie — mana saja yang diterima server Anda.

Apakah heartbeat berupa frame ping?

Itu pesan biasa Bukan. Halaman web tidak bisa mengirim atau melihat frame ping/pong di level protokol; browser menjawab ping dari server dengan sendirinya. Kirim berkala di sini adalah pesan teks biasa yang dikirim pada interval tertentu, dan nonaktif secara default.

Kenapa saya tidak bisa terhubung ke server Socket.IO?

Pilih Socket.IO di kolom Protokol Socket.IO bukan WebSocket biasa. Di kolom Protokol, pilih Socket.IO v3/v4: alat ini akan terhubung ke /socket.io/?EIO=4&transport=websocket, membalas paket open dengan 40, dan menjawab setiap ping 2 dengan pong 3.

Apa itu alat tes WebSocket online?

Alat tes WebSocket adalah klien yang Anda arahkan ke server WebSocket untuk melihat apakah server menerima koneksi dan apa yang dikirimnya balik. Anda memasukkan alamat ws:// atau wss://, terhubung, mengirim pesan teks atau biner, lalu membaca balasannya — cara tercepat untuk memeriksa endpoint backend, reverse proxy, atau perangkat yang memakai WebSocket tanpa menulis kode klien.

Alat ini berjalan di browser Anda: koneksi langsung dari browser ke server yang Anda masukkan, dan pesan tidak melewati server go-tools. Artinya, batasan browser juga berlaku. Alat ini tidak bisa menambahkan header permintaan kustom, tidak bisa mengirim frame ping di level protokol, dan saat handshake gagal, browser hanya memberi tahu halaman close code 1006, bukan penyebabnya.

Yang ditambahkan dibanding konsol browser biasa: pesan biner ditampilkan sebagai HEX (atau Base64) dan dikirim dari HEX atau Base64 sebagai frame biner asli, JSON diformat otomatis, penjelasan close code, daftar periksa saat koneksi gagal, peringatan sebelum terhubung jika browser kemungkinan memblokir alamatnya, dan log yang tetap responsif pada sekitar 2.000 pesan per detik (dalam pengujian kami).

09:30:01.204 · Connecting to ws://localhost:8080/ws
09:30:01.219 · Connected · subprotocol: chat
09:30:02.517 → TXT 17 B {"type":"hello"}
09:30:02.531 ← TXT 25 B {"type":"hello","ok":true}
09:30:03.002 → BIN 4 B 48 69 00 FF
09:30:03.010 ← BIN 4 B 48 69 00 FF
09:30:09.880 · Closed · code 4001: application-defined code

Fitur tes WebSocket

Localhost dan LAN: panduan per browser sebelum Anda terhubung

Sebelum Anda terhubung, alat ini memeriksa alamatnya: ws:// biasa ke nama domain dari halaman HTTPS ini akan diblokir, jadi alat ini memberi tahu dan menyarankan wss://. Untuk localhost dan alamat IP LAN, alat ini memberi tahu bahwa Chrome akan meminta akses jaringan lokal, serta apa bedanya di Firefox dan Safari (per Oktober 2026).

Pesan biner sebagai HEX, kirim biner sungguhan

Pesan biner yang diterima ditampilkan sebagai HEX, 16 byte per baris, atau sebagai Base64. Ketik byte seperti 48 69 00 FF, 0x48,0x69, atau Base64, dan byte itu dikirim sebagai pesan biner; karakter tidak valid dan jumlah digit ganjil dilaporkan beserta posisinya, dan pratinjau byte menunjukkan persis apa yang akan dikirim.

Close code dan kegagalan yang bisa ditindaklanjuti

Setiap penutupan menampilkan kode, teks alasan, dan apakah closing handshake selesai, lengkap dengan arti kode standar 1000–1015 dan catatan untuk kode aplikasi 4000–4999. Kegagalan sebelum koneksi terbuka menghasilkan daftar periksa, bukan tebakan.

Log cepat dengan pencarian dan ekspor

Pesan digambar sekali per frame, sehingga halaman tetap responsif pada sekitar 2.000 pesan per detik dalam pengujian kami. Setiap entri punya arah, stempel waktu milidetik, jenis, dan ukuran byte. Filter berdasarkan arah, cari, jeda tampilan, simpan N entri terakhir, salin, atau ekspor sebagai teks.

Subprotokol, batas waktu, protokol Socket.IO

Minta satu atau beberapa subprotokol (dipisahkan koma) dan lihat apakah server mengonfirmasi salah satunya. Batas waktu koneksi menghentikan handshake yang tidak pernah dijawab server. Pilihan Socket.IO v3/v4 di kolom Protokol menyelesaikan handshake Engine.IO v4 dan menjawab ping untuk Anda.

Heartbeat dan sambung ulang yang opsional

Kirim berkala mengulang pesan pilihan Anda pada interval tertentu, dan sambung ulang otomatis mencoba lagi dengan exponential backoff setelah koneksi putus tak terduga. Keduanya nonaktif secara default, dan alat ini tidak pernah mengirim apa pun yang tidak Anda minta.

Contoh tes WebSocket: localhost, biner, close code, Socket.IO

Tes server pengembangan lokal

ws://localhost:8080/ws
Terhubung
→ TXT 17 B {"type":"hello"}
← TXT 25 B {"type":"hello","ok":true}

Di Chrome 147 ke atas, browser lebih dulu menanyakan apakah akses ke jaringan lokal Anda diizinkan; pilih Izinkan. Firefox langsung terhubung ke localhost; Safari memblokir ws:// dari halaman HTTPS ini (per Oktober 2026).

Kirim pesan biner dari HEX

48 69 00 FF
→ BIN 4 B 48 69 00 FF

Dalam mode HEX, alat ini mengirim pesan biner berisi empat byte ini, bukan teks 48 69 00 FF. Base64 SGkA/w== mengirim empat byte yang sama.

Membaca penutupan dari server

Server menutup dengan kode 4001, alasan "token expired"
Ditutup · kode 4001: kode yang ditentukan aplikasi · penutupan bersih
Alasan: token expired

Kode 4000–4999 ditentukan oleh aplikasi, jadi cari arti 4001 di dokumentasi server. Kode 1000–1015 adalah kode standar dan dijelaskan di log.

Terhubung ke server Socket.IO

Protokol: Socket.IO v3/v4, alamat ws://localhost:3000
Menghubungkan ke ws://localhost:3000/socket.io/?EIO=4&transport=websocket
← 0{"sid":"…","pingInterval":25000,…}
→ 40
← 40{"sid":"…"}

Pilihan Socket.IO v3/v4 di kolom Protokol mengisi path dan query Socket.IO, membalas 40 untuk bergabung ke namespace default, dan menjawab setiap ping 2 dengan 3. Kirim event sebagai 42["event","data"].

Cara tes WebSocket online

  1. 1

    Masukkan alamat server

    Ketik atau tempel alamat ws:// atau wss://; http:// dan https:// diperlakukan sebagai ws:// dan wss://. Perhatikan catatan di bawah alamat: catatan itu memperingatkan jika browser kemungkinan memblokirnya.

  2. 2

    Tambahkan subprotokol jika server membutuhkannya

    Sebagian server mewajibkan subprotokol, misalnya mqtt. Masukkan satu atau beberapa, dipisahkan koma. Setelah terhubung, log menunjukkan mana yang dikonfirmasi server.

  3. 3

    Hubungkan

    Tekan Hubungkan. Untuk localhost atau alamat LAN di Chrome, pilih Izinkan saat ditanya soal akses jaringan lokal. Jika koneksi gagal, ikuti daftar periksa yang muncul.

  4. 4

    Kirim dan baca pesan

    Pilih Teks, HEX, atau Base64, periksa pratinjaunya, lalu tekan Ctrl+Enter. JSON yang diterima diformat dan biner ditampilkan sebagai HEX; ubah tampilan biner ke Base64 di toolbar log.

  5. 5

    Filter, lalu salin atau ekspor

    Filter berdasarkan arah atau cari di log, jeda tampilan saat pesan membanjir, lalu salin atau ekspor log sebagai teks lengkap dengan stempel waktu, arah, dan ukuran byte.

Kesalahan umum koneksi WebSocket

ws:// ke nama domain dari halaman HTTPS

Browser memblokir ws:// tanpa enkripsi ke nama domain dari halaman yang dimuat lewat HTTPS (mixed content). Chrome dan Firefox langsung menolak dengan SecurityError. Gunakan wss://; untuk server LAN di Chrome, tulis alamat IP-nya (akses jaringan lokal harus diizinkan).

✗ Salah
ws://api.example.com/ws
✓ Benar
wss://api.example.com/ws

HEX diketik dalam mode teks

Dalam mode teks, 48 69 dikirim sebagai karakter teks 4, 8, spasi, 6, 9. Beralihlah ke HEX untuk mengirim byte 0x48 0x69 sebagai pesan biner.

✗ Salah
Mode teks: 48 69 → TXT 5 B
✓ Benar
Mode HEX: 48 69 → BIN 2 B

URL Socket.IO dipakai sebagai WebSocket biasa

Server Socket.IO menolak WebSocket biasa di path root-nya, dan tanpa balasan untuk handshake dan ping-nya, server akan menutup koneksi. Pilih Socket.IO v3/v4 di kolom Protokol.

✗ Salah
ws://localhost:3000
✓ Benar
ws://localhost:3000/socket.io/?EIO=4&transport=websocket

Token di header permintaan

Browser tidak bisa mengirim header Authorization bersama handshake WebSocket. Jika server Anda mengizinkan, kirim token sebagai parameter URL atau subprotokol.

✗ Salah
Authorization: Bearer eyJ…
✓ Benar
wss://api.example.com/ws?token=eyJ…

Kapan tes WebSocket online berguna

Memeriksa endpoint backend
Pastikan rute WebSocket baru merespons, periksa pesan-pesan pertama yang dikirimnya, dan uji cara ia menangani input yang salah — sebelum frontend-nya ada.
Debugging reverse proxy
Di balik Nginx atau gateway, lihat apakah upgrade berhasil lewat dan berapa lama koneksi idle bertahan.
IoT dan protokol biner
Perangkat dan broker yang bertukar data biner lewat WebSocket bisa dibaca sebagai HEX dan dikirimi byte persis dari HEX atau Base64.
Mereproduksi close code
Lihat close code dan alasan yang benar-benar dikirim server, misalnya saat token kedaluwarsa atau klien terkena rate limit.
Tampilan saat pesan membanjir
Amati server mengirim sekitar 2.000 pesan per detik (dalam pengujian kami) tanpa membuat halaman macet, dengan penghitung pesan dan byte.

Cara kerja koneksi WebSocket di browser

Opening handshake
WebSocket diawali dengan permintaan HTTP berisi Upgrade: websocket. Browser menyusun sendiri header permintaannya — Origin, Sec-WebSocket-Key, Sec-WebSocket-Version: 13, dan Sec-WebSocket-Protocol dari daftar subprotokol — dan halaman tidak bisa menambahkan yang lain. Server menjawab 101 Switching Protocols, dan sejak itu kedua pihak bertukar pesan.
Pesan teks dan biner
send() dengan string mengirim pesan teks yang di-encode sebagai UTF-8; send() dengan byte mengirim pesan biner. Halaman menerima pesan utuh, tidak pernah frame, fragmen, atau mask. Alat ini mengatur binaryType ke arraybuffer agar pesan biner tiba berurutan dan bisa ditampilkan sebagai HEX.
Kenapa error tidak membawa detail
Standar WebSocket melarang browser memberi tahu skrip kenapa koneksi gagal — kegagalan DNS, port yang ditolak, error sertifikat, atau HTTP 401 semuanya terlihat sama — sehingga halaman tidak bisa memindai jaringan lokal Anda. Halaman hanya melihat event error dan close code 1006 (Firefox melaporkan error sertifikat sebagai 1015).
Mixed content dan akses jaringan lokal
Halaman HTTPS tidak boleh membuka ws:// tanpa enkripsi ke host publik. Sejak Chrome 147, WebSocket juga termasuk dalam Local Network Access: menjangkau localhost atau IP privat dari halaman publik memerlukan izin Anda. Firefox mengecualikan alamat loopback; Safari tidak (per Oktober 2026).
Close code
Klien hanya boleh menutup dengan 1000 atau 3000–4999, dan alasannya paling panjang 123 byte UTF-8. 1005 (tanpa kode status) dan 1006 (penutupan abnormal) tidak pernah muncul di jalur data; browser yang melaporkannya. 1015 dilaporkan untuk kegagalan TLS hanya oleh sebagian browser.

Tips menguji WebSocket

Gunakan wss:// di luar komputer Anda sendiri
wss:// yang terenkripsi dengan sertifikat tepercaya bisa menjangkau server publik dari halaman ini di semua browser dan melindungi token di URL; untuk alamat localhost atau LAN, Chrome tetap meminta izin jaringan lokal lebih dulu. Gunakan ws:// tanpa enkripsi hanya untuk localhost.
Cek konsol saat handshake gagal
Halaman hanya melihat 1006. Chrome dan Edge mencetak status HTTP di konsol, yang biasanya langsung menunjuk ke masalah autentikasi, path, atau proxy.
Izinkan Origin di server
Browser selalu mengirim Origin. Jika server Anda memeriksanya, izinkan https://go-tools.org selama pengujian; header CORS tidak berlaku untuk WebSocket.
Biarkan server yang mengirim ping
Agar koneksi idle tetap hidup melewati proxy, buat server mengirim frame ping; browser menjawabnya secara otomatis. Gunakan kirim berkala hanya jika protokol Anda mengharapkan pesan aplikasi.
Jangan biarkan token ada di log yang dibagikan
Alamat sering membawa token. Alat ini menyimpan alamat dan pesan hanya di memori, tetapi log yang diekspor dan tangkapan layar memuatnya — hapus data rahasia sebelum membagikan.

FAQ tes WebSocket

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.