在 WebSocket 中,对於是否处於连线状态,或是连线有无成功,预设有提供参数供开发者判断,因此可以透过 readState
来检查。
首先查看 WebSocket.readyState 文件,可以看到 1 是保持连线状态,3 则是关闭连线。
所以接下来透过实作来查看状态的变化。
// main.js
ws.onopen = function () {
// send to server-side
console.log(`open : ${ws.readyState}`);
};
ws.onmessage = function (event) {
console.log(`message : ${ws.readyState}`);
console.log(event);
};
// 当连结关闭时,主动触发 close event
ws.onclose = function (event) {
console.log(`close : ${ws.readyState}`);
};
terminal 运行 server-side 的 index.js,可以看到 client-side 印出来的状态。
同样的,如果 terminal 关闭 server-side,那页面则会印出 3,表示 ws 连线已关闭。
除了关闭 server 来触发 close 事件外,也可以从 client-side 来关闭 ws 连线。
<button type="button" id="btn">Disconnect</button>
// main.js
const closeBtn = document.getElementById('btn');
closeBtn.addEventListener('click', () => {
ws.close();
});
另一种情境,则是 server-side 出现连线问题,导致 client-side 试图连线却失败,这时候就会触发 error 事件。
// main.js
ws.onerror = function () {
console.log(`error : ${ws.readyState}`);
};
关闭运行的 server-side,并重新刷新 HTML 页面,这时候,client-side 会因为无法连线 server 导致 fail,进而触发 error event。
>>: 数据分析的好夥伴 - Python基础:资料形式(下)
今日题目:48. Rotate Image You are given an n x n 2D ma...
Nnọọ,我是Charlie! 在Day23当中我们完成了订单资料的後端API,而今天我们将完成订单...
大家好~ 今天要开始实作留言功能, 个人习惯先从建立 Model 开始, 在建立 Model 时, ...
刚踏入黑森林的第一步,就吹来一股寒风。 「究竟,这是座什麽样的森林呢?」 「不管了,我想成为第一个...
前言 路由简单来说就是连接介面的桥梁,而这个桥梁就叫做Navigator,就是导航的意思,用於管理进...