diff --git a/src/main.js b/src/main.js index 3ccf11d..1626c06 100644 --- a/src/main.js +++ b/src/main.js @@ -166,6 +166,29 @@ const chat = new Chat({ } }) +// 与每个客户端保持心跳 +clientList.setChannel('ping', { + onopen: async (event, client) => { + console.log('打开信道', event.target.label) + clientList.sendto(client.id, 'ping', JSON.stringify({ type: 'ping' })) + }, + onmessage: async (event, client) => { + const data = JSON.parse(event.data) + if (data.type === 'ping') { + console.log(client.name, '心跳:', data) + clientList.sendto(client.id, 'ping', JSON.stringify({ type: 'pong' })) + return + } + if (data.type === 'pong') { + console.log(client.name, '心跳:', data) + await new Promise((resolve) => setTimeout(resolve, 1000)) + clientList.sendto(client.id, 'ping', JSON.stringify({ type: 'ping' })) + return + } + console.log('未知类型:', data.type) + } +}) + // 与每个客户端都建立聊天信道 clientList.setChannel('chat', { onopen: async (event, client) => {