日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实现webIM技术小结——websocket IM原理篇

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现webIM技术小结——websocket IM原理篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

繼續總結webIM實現的核心技術-websocket,以及socket.io的總結歸納~~

IM通訊協議

應用場景:

  • 即時通信? ? ? ? ? 聊天
  • 消息推送? ? ? ? ? 好友上線,微博被贊
  • 其他領域? ? ? ? ? 股票價格/商品拍賣/監控報警
  • 協議種類:

    協議用途:數據封裝與傳輸,連接有效性檢測,消息接收保證

    • 私有協議? ? ? ? ? ?
      • 二進制:QQ
      • 文本: MSN
    • 公共協議
      • XMPP(可擴展通訊和表示協議):Google talk, vesper, 消息基于XML?
      • SIP:微軟,IBM
      • Bayeux:comet,消息基于json

    XMPP

    開源服務器端:
    openfire 支持上萬并發 ejabber 高效,支持分布式
    android客戶端:?www.beem-project.com

    音視頻協議:

  • rtmp
    flash插件
  • WebRTC
    支持html5
    適合哪些場景?
  • WebIM多種實現方式

  • Ajax短輪詢,不需要服務器端特殊支持html5的WebSocket(webrtc) html5的event source
  • flash XMLSocket、java applet套接字
  • comet
    基于 HTTP長連接、無須在瀏覽器端安裝插件的”服務器推”技術為“Comet”
    a)長輪詢
    b)iframe streaming
  • html5的WebSocket(webrtc)
  • html5的event source
  • 短輪詢Ajax的特點:

    ? ? ?優點: 標準http,服務端不需要定制

    ? ? ?缺點: 消耗大量網絡資源,服務器需要頻繁查詢大量數據,不實時

    長輪詢comet的特點:

    ? ? ?優點:

    • 服務器阻斷請求,沒有數據時不立即返回,延遲一個長時間,比如50s再返回
    • 有數據服務器立即返回
    • 服務器返回或者超時,客戶端發起新的連接?http://samples.app.ucai.cn/longpolling/send.html

    ? ? ?缺點:

    • 節約資源
    • 響應比較及時,是實時的
    • 瀏覽器兼容性好
    • 服務器需要維持連接,占用一定資源

    iframe Comet

    ? ? 優點:

    • 頁面嵌入隱蔽iframe,src指向長連接請求不斷開content-encoding:chunked
    • 服務器一直往src寫入js數據獲取消息

    ? ? 缺點:

    • 無需重復發起連接
    • 瀏覽器會一直顯示加載狀態

    html5 event source

    ? ? 優點:

    • 客戶端與服務端建立連接后不斷開
    • 服務器有事件才返回數據
    • 只能在同一個域下
    • 服務器單向? ? ? ?

    html5 websocket

    • ?按需雙向通信
    • 可在不同域和event sounce一樣,瀏覽器兼容性有限

    web IM開源框架

    nginx-push-stream-module WebIM神器

    • ?https://github.com/wandenberg/nginx-push-stream-module
    • 支持多種方式? ?http://samples.app.ucai.cn:8080/send.html
    • 生產環境可用? ?iframe longpolling jsonp eventsource websocket

    特點

    • jsonp? 同長輪詢,可以跨域
    • EventSource? Content-Type:text/event-stream;charset=utf-8 同WebSocket,html5才支持輕量、干凈
    • icomet 支持上百萬連接非常穩定? ??http://210.14.147.15:8080/quanzhan_icomet/chat.php

    comet成熟的開源框架

    • 基于web server
    • 獨立server

    ? ?dwr(java) pushlet(java) nginx-push-stream-module
    ? ?cometd(java)
    ? ?icomet(c++)
    ? ?ice:?http://www.zeroc.com/chat/index.html

    客戶端都是js、html

    **各框架比較 **
    1、icomet
    性能極高,支持上百萬連接
    自帶驗證,客戶端
    2、nginx-push-stream-module
    功能多,支持幾十萬連接
    3、dwr、pushlet
    和java代碼結合緊密
    #音視頻解決方案

    主流技術
    1、rtmp
    2、WebRTC
    音視頻:NetStream
    消息和文本:ShareObject?https://github.com/arut/nginx-rtmp-module
    完全無插件
    演示:https://meet.jit.si/?源碼:https://github.com/jitsi/jitsi-meet

    WebRTC技術
    1、MediaStream: 通過設備的攝像頭及話筒獲得視頻、音頻的同步流 2、RTCPeerConnection: 是WebRTC用于構建點對點之間穩定、高效的流傳輸的組件 3、RTCDataChannel: 使得瀏覽器之間(點對點)建立一個高吞吐量、低延時的信道,用于傳 輸任意數據

    #生產環境選擇及問題

    選擇WebIM
    需要支持人數
    可靠性
    支持的平臺
    熟悉的開發語言
    是否和其他軟件融合
    完善生產環境
    1、數據保存 2、安全驗證 3、單點故障

    ?

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的实现webIM技术小结——websocket IM原理篇的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。