当前位置: 首页 > 后端技术 > Node.js

WebSocket实现通信原理及聊天案例

时间:2023-04-03 18:57:47 Node.js

什么是webSocket?WebSocket是HTML5提供的一种协议,用于在单个TCP连接上进行全双工通信。WebSocket使得客户端和服务器之间的数据交换更加容易,允许服务器主动向客户端推送数据。在WebSocketAPI中,浏览器和服务器只需要完成一次握手,两者之间就可以直接建立持久连接,进行双向数据传输。在WebSocketAPI中,浏览器和服务器只需要进行一次握手,浏览器和服务器之间就形成了一个快速通道。两者之间可以直接传输数据。通俗地说,浏览器不需要主动向服务器请求数据,只需要进行一次握手(保证连接),数据就可以从服务器推送到客户端,也就是浏览器。如何使用网络套接字?webSocket事件事件事件处理器说明openSocket.onopen客户端从服务器接收数据时触发messageSocket.onmessageerrorSocket.onerror发生通信错误时触发closeSocket.onclose连接关闭时触发WebSocket方法方法说明Socket.send()使用connection发送数据Socket.close()关闭连接首先,客户端需要与服务端建立连接server:constWebSocket=require('ws');//导入WebSocket模块:constWebSocketServer=WebSocket.Server;//引用服务器类:constwss=newWebSocketServer({port:3000});//实例化:3000端口client:varsock=newWebSocket('ws://localhost:3000');客户端向服务器发送数据sock.send(JSON.stringify({***}))服务器接收数据并将收到的数据转发给连接到服务器的其他客户端wss.on('connection',function(ws){//接收客户端数据ws.on('message',(message)=>{//message是接收到的数据message=JSON.parse(message)wss.clients.forEach((client)=>{//do收不到自己发送的信息if(client!=ws){//服务端发送client.send(JSON.stringify({***}))}})});//关闭断开连接的客户端ws.on('关闭',function(){console.log('断开连接');})});客户端收到数据并Processsock.onmessage=(message)=>{//message.data为接收到的数据varmsg=JSON.parse(message.data);}实现效果图:废话不多说,这里是代码https://github.com/myweiwei/websocket会不断更新完善,欢迎批评指正!