真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

koasocket即時(shí)通訊的示例代碼

前言

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站與策劃設(shè)計(jì),大名網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:大名等地區(qū)。大名做網(wǎng)站價(jià)格咨詢:13518219792

http的特點(diǎn)是一問一答,而即時(shí)通訊是需要雙向通信的,這樣以前的即時(shí)通信只能使用輪詢的方式通過周期性的ajax請(qǐng)求獲取數(shù)據(jù),直到websocket出現(xiàn),就完美實(shí)現(xiàn)了雙向通信

一 即時(shí)通訊方式簡(jiǎn)介

段輪詢

前臺(tái)使用setInterval進(jìn)行定時(shí)請(qǐng)求后臺(tái),這樣無疑非常浪費(fèi)性能

長(zhǎng)輪詢和長(zhǎng)連接(html5的EventSource)

客服端連接一次,服務(wù)端不斷開連接,服務(wù)端接收到新消息就發(fā)送給前臺(tái),客服端和服務(wù)端保持一直連接,缺點(diǎn)是只有服務(wù)端向客服端輸出

websocket

websocket不再是走h(yuǎn)ttp協(xié)議,而是升級(jí)為websocket協(xié)議,說到底就是走應(yīng)用層協(xié)議(tcp),實(shí)現(xiàn)雙向通信,缺點(diǎn)是兼容性問題(ie11)

socket.io

上面的方式都存在一定問題,自然就有人封裝一套完美的解決方案,socket.io就是集合了上面幾種方案的另一種解決方案

二 即時(shí)通信實(shí)現(xiàn)

客服端

引入包:

服務(wù)端和客服端通過on和emit進(jìn)行交互

  1. emit表示發(fā)送,事件名自定義,另一端用on進(jìn)行接收
  2. on表示接受,類似jq綁定事件,事件名對(duì)應(yīng)emit事件名
  3. connect,disconnect是連接和斷開事件
 // 建立連接
 var socket= io('http://localhost:80')
 // on表示接收
 // emit表示發(fā)送
 socket.on('connect', function () {
 console.log('連接上了')
 // 登錄,同步前后端信息
 // 請(qǐng)求后端login接口,寫入socketid
 socket.emit('login', {
  // 身份標(biāo)識(shí),可以是時(shí)間戳或者唯一id,最要用來回去socketid進(jìn)行私聊
  id: username
 })
 })


 // 發(fā)送消息,這里可以用發(fā)送事件進(jìn)行消息發(fā)送
 socket.emit('sendMsg', {
 newAccount: 'xxxxxx'
 })
 
 // 接收消息
 socket.on('msg1', function (data) {
 // 可以對(duì)數(shù)據(jù)進(jìn)行渲染
 console.log(data)
 
 })
 socket.on('allmessage', function (data) {
 // 接收所有人消息
 console.log(data);

 })
 
 // 表示連接斷開了
 socket.on('disconnect', function () {
 console.log('聊天

服務(wù)端(koa+koa-socket)

安裝koa-socket

npm i koa2 koa-socket -S
 const IO = require('koa-socket')
 const Koa = require('koa2')
 const io = new IO()
 
 const app = new Koa()
 
 // 將socket和app關(guān)聯(lián)
 io.attach(app)
 // 和客服端進(jìn)行連接
 io.on('connection', (context) => {
 console.log('連接上了')
 })
 // 接收消息
 io.on('sendMsg', function (context) {
 //console.log(context.data)
 // 向客服端實(shí)時(shí)發(fā)送消息
 io.broadcast('msg1', '我是服務(wù)器來的')

 // 廣播,所有人消息
 io.broadcast('allmessage', context.data.newAccount)
 })

 // 處理登陸同步信息
 io.on('login', context => {
 let id = context.data.id;
 console.log(context);
 });

總結(jié)

上面就是koa-socket使用的簡(jiǎn)單介紹,只實(shí)現(xiàn)了簡(jiǎn)單的消息推送和接收,后面還有私聊和群發(fā),其原理是獲取到每個(gè)用戶的socketid,發(fā)送消息時(shí)對(duì)應(yīng)發(fā)送,后面再進(jìn)行更新

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


分享名稱:koasocket即時(shí)通訊的示例代碼
文章URL:
http://weahome.cn/article/ijihdc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部