欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

koa socket即時通訊的示例代碼

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

前言

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

一 即時通訊方式簡介

段輪詢

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

長輪詢和長連接(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進行交互

  1. emit表示發(fā)送,事件名自定義,另一端用on進行接收
  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進行私聊
  id: username
 })
 })


 // 發(fā)送消息,這里可以用發(fā)送事件進行消息發(fā)送
 socket.emit('sendMsg', {
 newAccount: 'xxxxxx'
 })
 
 // 接收消息
 socket.on('msg1', function (data) {
 // 可以對數(shù)據(jù)進行渲染
 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)
 // 和客服端進行連接
 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ā)送,后面再進行更新

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

相關(guān)文章

  • 詳解Nodejs 部署到阿里云全過程

    詳解Nodejs 部署到阿里云全過程

    這篇文章主要介紹了詳解Nodejs 部署到阿里云全過程,非常具有實用價值,需要的朋友可以參考下
    2017-06-06
  • node.js實現(xiàn)簡單爬蟲示例詳解

    node.js實現(xiàn)簡單爬蟲示例詳解

    這篇文章主要為大家介紹了node.js實現(xiàn)簡單爬蟲示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Nodejs實現(xiàn)WebSocket代碼實例

    Nodejs實現(xiàn)WebSocket代碼實例

    這篇文章主要介紹了Nodejs實現(xiàn)WebSocket代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • node自定義安裝更改npm全局模塊默認(rèn)安裝路徑的步驟

    node自定義安裝更改npm全局模塊默認(rèn)安裝路徑的步驟

    有段時間沒用npm了,新建個項目,需要改變npm全局包默認(rèn)安裝的路徑,本文就來介紹一下node自定義安裝更改npm全局模塊默認(rèn)安裝路徑的步驟,感興趣的可以了解下
    2021-09-09
  • node.js+express留言板功能實現(xiàn)示例

    node.js+express留言板功能實現(xiàn)示例

    本文介紹基于nodejs+express+art-template的留言板功能。包含列表界面、添加界面和發(fā)送留言功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • nvm安裝使用及常用命令

    nvm安裝使用及常用命令

    nvm主要是用來管理?nodejs?和?npm?版本的工具,可以用來切換不同版本的?nodejs,這篇文章主要介紹了nvm安裝與使用,需要的朋友可以參考下
    2023-01-01
  • 淺析Node.js 中 Stream API 的使用

    淺析Node.js 中 Stream API 的使用

    這篇文章給大家淺析node.js中stream api的使用,本文介紹的非常詳細(xì),涉及到node.js api,node.js stream相關(guān)知識,感興趣的朋友可以參考下
    2015-10-10
  • nodejs個人博客開發(fā)第四步 數(shù)據(jù)模型

    nodejs個人博客開發(fā)第四步 數(shù)據(jù)模型

    這篇文章主要為大家詳細(xì)介紹了nodejs個人博客開發(fā)的數(shù)據(jù)模型,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 如何使用Node.js判斷png圖片是否存在透明像素

    如何使用Node.js判斷png圖片是否存在透明像素

    這篇文章主要給大家介紹了關(guān)于如何使用Node.js判斷png圖片是否存在透明像素的相關(guān)資料,文中將實現(xiàn)的原理以及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • 基于node.js實現(xiàn)爬蟲的講解

    基于node.js實現(xiàn)爬蟲的講解

    今天小編就為大家分享一篇關(guān)于基于node.js實現(xiàn)爬蟲的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02

最新評論