心跳
This commit is contained in:
		
							
								
								
									
										23
									
								
								src/main.js
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								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', {
 | 
					clientList.setChannel('chat', {
 | 
				
			||||||
  onopen: async (event, client) => {
 | 
					  onopen: async (event, client) => {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user