API WebSocket pelayar mempunyai send(). Ia tidak mendedahkan kaedah ping() umum untuk JavaScript menghantar bingkai Ping protokol.

Jika aplikasi anda menghantar mesej teks seperti {"type":"heartbeat"}, itu ialah data aplikasi. Pelayan mesti memahami mesej itu dan menentukan respons. Pelayan yang tidak melaksanakan kontrak itu tidak wajib membalas dengan Pong protokol hanya kerana teks itu mengandungi perkataan ping.

Tentukan maksud pengesahan, cara ia mengenal pasti denyutan jantung yang belum selesai, dan bila pengesahan lama sudah terlalu lewat. Asingkan ia daripada pengesahan operasi perniagaan.

Pemasa JavaScript juga mempunyai kekangan penjadualan. Tab latar belakang dan utas utama yang sibuk boleh melengahkan panggilan balik. Jangan tafsirkan sempadan pemasa jitu yang terlepas sebagai bukti muktamad bahawa proksi berhenti memajukan.

Pelayar boleh mengendalikan bingkai kawalan protokol secara dalaman, tetapi itu tidak memberi kod aplikasi pandangan mudah alih bagi setiap Ping atau Pong. Jika halaman memerlukan keputusan kemandirian sendiri, gunakan kontrak aplikasi yang eksplisit dan dasar pemulihan.

Soket yang readyState-nya OPEN dianggap terbuka secara setempat; itu bukan ukuran bebas bahawa aplikasi jauh telah memproses mesej terakhir anda. Gunakan bukti yang sepadan dengan soalan yang benar-benar perlu anda jawab.

Artikel berkaitan