• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    關(guān)于WebSocket的那些事兒

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 19:26:37
    文檔

    關(guān)于WebSocket的那些事兒

    關(guān)于WebSocket的那些事兒:眾所周知傳統(tǒng)的http協(xié)議是客戶端(瀏覽器)發(fā)送請求,瀏覽器響應(yīng)請求的方式,一條請求對應(yīng)一條響應(yīng)。若瀏覽器不主動請求則服務(wù)端無法想客戶端主動推數(shù)據(jù)。傳統(tǒng)的方式是使用AJAX輪詢(這個方式有它的問題)來解決這一問題后面展開講。應(yīng)用場景列舉幾個應(yīng)用場景
    推薦度:
    導(dǎo)讀關(guān)于WebSocket的那些事兒:眾所周知傳統(tǒng)的http協(xié)議是客戶端(瀏覽器)發(fā)送請求,瀏覽器響應(yīng)請求的方式,一條請求對應(yīng)一條響應(yīng)。若瀏覽器不主動請求則服務(wù)端無法想客戶端主動推數(shù)據(jù)。傳統(tǒng)的方式是使用AJAX輪詢(這個方式有它的問題)來解決這一問題后面展開講。應(yīng)用場景列舉幾個應(yīng)用場景

    這個看出客戶端要通過很多次詢問后,才能知道服務(wù)端什么時候準(zhǔn)備就緒,這樣如果發(fā)送請求的客戶特別多,請求頻率特別高這無疑會給服務(wù)端造成了不小的壓力。

    如果有那么一種方式可以讓服務(wù)端想客戶端推送消息,就可以完美解決這一情況,于是WebSocket出現(xiàn)了。

    WebSocket的使用

    WebSocket是HTML5的新協(xié)議,所以支持HTML5的瀏覽器都能直接使用WebSocket不需要額外安裝,什么開發(fā)包,或者插件。

    為了測試WebSocket我們需要簡單的搞一個服務(wù)端程序。Node.js本身支持的協(xié)議包括TCP協(xié)議和HTTP協(xié)議,但不支持WebSocket,為了讓讓node也支持WebSocket,這里我選用ws模塊。

    測試

    創(chuàng)建一個名為testWebSocket的文件夾,使用npm init 初始化項目

    配置package.json文件添加,這里選用ws的最新的版本

    "dependencies": {
      "ws": "^6.2.1"
    }

    在根目錄使用npm指令npm install --save,把ws相關(guān)依賴都拉下來。

    然后創(chuàng)建一個名為myWebSocketServer.js的文件,一個簡單的WebSocket服務(wù)端程序完成,

    node myWebSocketServer.js先讓服務(wù)端跑起來。相關(guān)教程:webSocket 視頻教程

    // 導(dǎo)入WebSocket模塊:
    const WebSocket = require('ws');
    let i = 1;

    // 引用Server類:
    const WebSocketServer = WebSocket.Server;

    // 實例化:
    const myWs = new WebSocketServer({
    port: 8080
    });

    myWs.on('connection', ws => {
    ws.on('message', message => {
    console.log('received: %s', message);
    });

    setInterval(() => {
    ws.send('Hello siegaii this is serverMessage!' + i);
    i++;
    }, 1000);

    });

    客戶端

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>test</title>
    </head>
    <body>
    <button id="test">hello siegaii</button>

    <script>
    let ws = new WebSocket('ws://localhost:8080/testWebSocket');
    document.getElementById('test').addEventListener('click', () => {
    ws.send('Hello Siegaii this is clientMessage!');
    });

    // 響應(yīng)onmessage事件:
    ws.onmessage = (msg) => {
    console.log(msg);
    };

    </script>
    </body>
    </html>

    運行結(jié)果如下

    API

    簡單介紹下WebSocket的api

    // WebSocket Api
    let socket = new WebSocket(url, [protocol] ); // 實例化一個WebSocket對象建立連接
    /**
    * socket的readyState屬性
    * 0 - 表示連接尚未建立。
    * 1 - 表示連接已建立,可以進行通信。
    * 2 - 表示連接正在進行關(guān)閉。
    * 3 - 表示連接已經(jīng)關(guān)閉或者連接不能打開。
    */
    socket.readyState

    /**
    * 只讀屬性 bufferedAmount 已被 send() 放入正在隊列中等待傳輸,但是還沒有發(fā)出的 UTF-8 文本字節(jié)數(shù)。
    */
    socket.bufferedAmount

    /**
    * WebSocket 事件
    */
    socket.onopen(); //連接建立時觸發(fā)
    socket.onmessage(); //客戶端接收服務(wù)端數(shù)據(jù)時觸發(fā)
    socket.onerror(); //通信發(fā)生錯誤時觸發(fā)
    socket.onclose(); //連接關(guān)閉時觸發(fā)

    /**
    * WebSocket 方法
    */
    Socket.send() //使用連接發(fā)送數(shù)據(jù)
    Socket.close() //關(guān)閉連接

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    關(guān)于WebSocket的那些事兒

    關(guān)于WebSocket的那些事兒:眾所周知傳統(tǒng)的http協(xié)議是客戶端(瀏覽器)發(fā)送請求,瀏覽器響應(yīng)請求的方式,一條請求對應(yīng)一條響應(yīng)。若瀏覽器不主動請求則服務(wù)端無法想客戶端主動推數(shù)據(jù)。傳統(tǒng)的方式是使用AJAX輪詢(這個方式有它的問題)來解決這一問題后面展開講。應(yīng)用場景列舉幾個應(yīng)用場景
    推薦度:
    標(biāo)簽: 的事 WebSocket websocket的
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 欧美精品videosse精子| 最新国产精品亚洲| 日韩欧美精品不卡| 亚洲精品乱码久久久久66| 国产精品亚洲玖玖玖在线观看| www.亚洲精品| 国产女主播精品大秀系列| 中文字幕精品久久| 久久www免费人成精品香蕉| 精品九九久久国内精品| 国精品午夜福利视频不卡| 亚洲伊人久久精品影院| 欧美日韩国产精品自在自线| 国产精品 一区 在线| 精品福利一区二区三| 国产精品成人观看视频国产奇米 | 国产精品成熟老女人视频| 亚洲精品午夜无码电影网| 欧美精品色婷婷五月综合| 国产精品麻豆欧美日韩ww| 精品亚洲一区二区| 国产精品福利在线播放| WWW国产精品内射老师| 久久99精品久久久久久动态图| 亚洲国产精品无码久久| 最新国产精品拍自在线观看| 免费精品国自产拍在线播放| 精品亚洲一区二区三区在线观看| 国产精品热久久毛片| 国产精品制服丝袜亚洲欧美| 国产精品部在线观看| 国产AV国片精品一区二区| 99久久精品免费看国产免费| 91精品日韩人妻无码久久不卡 | 欧美精品免费线视频观看视频| 国产精品99精品无码视亚| 99国产欧美久久久精品蜜芽| 国产AV国片精品有毛| 99精品久久精品| 久久久九九有精品国产| 亚洲精品在线观看视频|