最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

koa socket即時通訊的示例代碼

 更新時間:2018年09月07日 14:45:06   作者:xu52501  
這篇文章主要介紹了koa socket即時通訊的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

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

一 即時通訊方式簡介

段輪詢

前臺使用setInterval進(jìn)行定時請求后臺,這樣無疑非常浪費性能

長輪詢和長連接(html5的EventSource)

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

websocket

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

socket.io

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

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

客服端

引入包:<script src="https://cdn.socket.io/socket.io-1.2.1.js";></script>

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

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


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

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

服務(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)
 // 向客服端實時發(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使用的簡單介紹,只實現(xiàn)了簡單的消息推送和接收,后面還有私聊和群發(fā),其原理是獲取到每個用戶的socketid,發(fā)送消息時對應(yīng)發(fā)送,后面再進(jìn)行更新

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決下載了nodejs但npm?-v沒有反應(yīng)問題的全過程

    解決下載了nodejs但npm?-v沒有反應(yīng)問題的全過程

    最近工作中遇到了個問題,node安裝成功,但npm無法使用,所以下面這篇文章主要給大家介紹了關(guān)于下載了nodejs但npm?-v沒有反應(yīng)問題解決的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • node.js +mongdb實現(xiàn)登錄功能

    node.js +mongdb實現(xiàn)登錄功能

    這篇文章主要介紹了node.js +mongdb實現(xiàn)登錄功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Express框架定制路由實例分析

    Express框架定制路由實例分析

    這篇文章主要介紹了Express定制路由,結(jié)合實例形式分析了express框架定制路由原理、用法及相關(guān)注意事項,需要的朋友可以參考下
    2023-05-05
  • Node.js設(shè)置定時任務(wù)之node-schedule模塊的使用詳解

    Node.js設(shè)置定時任務(wù)之node-schedule模塊的使用詳解

    node-schedule是 Node.js 的一個定時任務(wù)(crontab)模塊。這篇文章主要介紹了Node.js設(shè)置定時任務(wù)之node-schedule模塊的使用,需要的朋友可以參考下
    2020-04-04
  • Linux CentOS系統(tǒng)下安裝node.js與express的方法

    Linux CentOS系統(tǒng)下安裝node.js與express的方法

    這篇文章主要給大家介紹了在Linux CentOS系統(tǒng)下安裝node.js與express的方法,文中介紹的非常詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • express 項目分層實踐詳解

    express 項目分層實踐詳解

    這篇文章主要介紹了express 項目分層實踐詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • node.js中的fs.readdirSync方法使用說明

    node.js中的fs.readdirSync方法使用說明

    這篇文章主要介紹了node.js中的fs.readdirSync方法使用說明,本文介紹了fs.readdirSync方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 教你如何在Node.js中使用jQuery

    教你如何在Node.js中使用jQuery

    本文給大家分享的是如何在Node.js中使用jQuery的方法,包含步驟以及出錯的處理,非常的詳細(xì),有需要的小伙伴可以參考下
    2016-08-08
  • 基于docker搭建node環(huán)境開發(fā)服務(wù)器全過程

    基于docker搭建node環(huán)境開發(fā)服務(wù)器全過程

    這篇文章主要給大家介紹了關(guān)于如何基于docker搭建node環(huán)境開發(fā)服務(wù)器的相關(guān)資料,本文將采用docker技術(shù)部署一個簡單的nodejs應(yīng)用,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • vscode調(diào)試node.js的實現(xiàn)方法

    vscode調(diào)試node.js的實現(xiàn)方法

    這篇文章主要介紹了vscode調(diào)試node.js的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評論

龙游县| 南开区| 汶川县| 海伦市| 寿光市| 临湘市| 南漳县| 淮北市| 邹平县| 峡江县| 牙克石市| 永康市| 海安县| 武汉市| 大丰市| 东乌珠穆沁旗| 枝江市| 吉林市| 红桥区| 华池县| 侯马市| 同仁县| 小金县| 松江区| 长阳| 石泉县| 若尔盖县| 凤冈县| 沁阳市| 乐业县| 三门县| 芜湖县| 宜兰市| 安仁县| 丰宁| 长沙市| 深水埗区| 新田县| 班玛县| 辽阳县| 盐源县|