高雅的套接字即时通讯的示例代码

  


  

  

http的特点是一问一答,而即时通讯是需要双向通信的,这样以前的即时通信只能使用轮询的方式通过周期性的ajax请求获取数据,直到websocket出现,就完美实现了双向通信

  


  

  

<强>段轮询
  

  

前台使用setInterval进行定时请求后台,这样无疑非常浪费性能
  

  

<强>长轮询和长连接(html5的EventSource)
  

  

客服端连接一次,服务端不断开连接,服务端接收到新消息就发送给前,台客服端和服务端保持一直连接,缺点是只有服务端向客服端输出
  

  

<强> websocket
  

  

websocket不再是走http协议,而是升级为websocket协议,说到底就是走应用层协议(tcp),实现双向通信,缺点是兼容性问题(ie11)
  

  

<强>插座。io
  

  

上面的方式都存在一定问题,自然就有人封装一套完美的解决方案,插座。io就是集合了上面几种方案的另一种解决方案
  

  


  

  

客服端
  

  

引入包:& lt;脚本src=" https://cdn.socket.io/socket.io-1.2.1.js ";祝辞& lt;/script>
  

  

服务端和客服端通过在和排放进行交互
  

  
      <李>排放表示发送,事件名自定义,另一端用在进行接收李   <李>在表示接受,类似金桥绑定事件,事件名对应发出事件名李   <李>连接,断开是连接和断开事件   
     //建立连接   var插座=io (http://localhost: 80)//>   npm我koa2 koa-socket - s            const IO=要求(“koa-socket”)   const高雅=要求(“koa2”)   const io=new io ()      const应用=new高雅()//将套接字和应用关联   io.attach(应用)//和客服端进行连接   io。(“连接”,(上下文)=比;{   console.log(“连接上了”)   })//接收消息   io。(“sendMsg”功能(上下文){//console.log (context.data)//向客服端实时发送消息   io。广播(“msg1”、“我是服务器来的”)//广播,所有人消息   io。广播(allmessage, context.data.newAccount)   })//处理登陆同步信息   io。(“登录”,上下文=比;{   让id=context.data.id;   console.log(上下文);   });      


  

  

上面就是koa-socket使用的简单介绍,只实现了简单的消息推送和接收,后面还有私聊和群发,其原理是获取到每个用户的socketid,发送消息时对应发送,后面再进行更新
  

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

高雅的套接字即时通讯的示例代码