成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

WebSocket入門

jiekechoo / 3369人閱讀

摘要:是開始提供的一種在單個連接上進(jìn)行全雙工通訊的協(xié)議。輪詢是在特定的的時間間隔如每秒,由瀏覽器對服務(wù)器發(fā)出請求,然后由服務(wù)器返回最新的數(shù)據(jù)給客戶端的瀏覽器。

WebSocket 是 HTML5 開始提供的一種在單個 TCP 連接上進(jìn)行全雙工通訊的協(xié)議。

WebSocket 使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單,允許服務(wù)端主動向客戶端推送數(shù)據(jù)。在 WebSocket API 中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進(jìn)行雙向數(shù)據(jù)傳輸

現(xiàn)在,很多網(wǎng)站為了實現(xiàn)推送技術(shù),所用的技術(shù)都是 Ajax 輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對服務(wù)器發(fā)出HTTP請求,然后由服務(wù)器返回最新的數(shù)據(jù)給客戶端的瀏覽器。這種傳統(tǒng)的模式帶來很明顯的缺點,即瀏覽器需要不斷的向服務(wù)器發(fā)出請求,然而HTTP請求可能包含較長的頭部,其中真正有效的數(shù)據(jù)可能只是很小的一部分,顯然這樣會浪費很多的帶寬等資源。

HTML5 定義的 WebSocket 協(xié)議,能更好的節(jié)省服務(wù)器資源和帶寬,并且能夠更實時地進(jìn)行通訊。

瀏覽器通過 JavaScript 向服務(wù)器發(fā)出建立 WebSocket 連接的請求,連接建立以后,客戶端和服務(wù)器端就可以通過 TCP 連接直接交換數(shù)據(jù)。

當(dāng)你獲取 Web Socket 連接后,你可以通過 send() 方法來向服務(wù)器發(fā)送數(shù)據(jù),并通過 onmessage 事件來接收服務(wù)器返回的數(shù)據(jù)。

DEMO如下

// client side file

let socket = new WebSocket("ws://localhost:9999");

// 當(dāng)連接成功執(zhí)行回調(diào)函數(shù)
socket.onopen = function () {
  console.log("客戶端連接成功");
  
  // 向服務(wù)器發(fā)送一個消息
  socket.send("這是客戶端發(fā)給服務(wù)器的消息");
}

// 綁定事件是用加屬性的方式
socket.onmessage = function (res) {
  console.log("收到服務(wù)器端的響應(yīng)是", res);
}
// server side file
/* npm i ws -S */
/* 用ws模塊啟動一個websocket服務(wù)器,監(jiān)聽 9999 端口 */
let WebSocketServer = require("ws").Server; 
let wsServer = new WebSocketServer({port: 9999});

wsServer.on("connection", socket=>{
    console.log("服務(wù)器連接成功");
    socket.on("message", msg=>{
        console.log("從客戶端接收到的信息為"+msg);
        socket.send("這是從服務(wù)器發(fā)送到客服端的信息");
    })
})

簡單模擬智能客服聊天





const contents = ["你好", "hi", "hello", "nice to meet you", "how are you", "how do you do"]

let WebSocketServer = require("ws").Server; 
let wsServer = new WebSocketServer({port: 9999});

wsServer.on("connection", socket=>{
    console.log("服務(wù)器連接成功");
    socket.on("message", msg=>{
        console.log("從客戶端接收到的信息為"+msg);
        socket.send(contents[parseInt(Math.random()*contents.length)]);
    })
})

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109233.html

相關(guān)文章

  • 慕課網(wǎng)_《Netty入門WebSocket初體驗》學(xué)習(xí)總結(jié)

    時間:2018年04月11日星期三 說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com 教學(xué)源碼:https://github.com/zccodere/s... 學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 什么是Netty 高性能、事件驅(qū)動、異步非阻塞的IO Java開源框架 基于NIO的客戶...

    Noodles 評論0 收藏0
  • WebSocket系列之基礎(chǔ)知識入門

    摘要:概述本文是系列的第一篇,主要介紹相關(guān)的基礎(chǔ)協(xié)議知識和??蛻舳耸盏巾憫?yīng)后,立即發(fā)起下一次的請求。收到消息通過事件來接收消息。類型則需要傳遞一個對象作為參數(shù),相關(guān)的內(nèi)容也將在本系列第二篇中進(jìn)行介紹。 概述 本文是WebSocket系列的第一篇,主要介紹WebSocket相關(guān)的基礎(chǔ)協(xié)議知識和API。由于WebSocket的相關(guān)介紹在MDN中分布較亂,初學(xué)者不太容易入門,因此通過本文將相關(guān)基礎(chǔ)...

    Yuqi 評論0 收藏0
  • websocket入門 (一)

    摘要:長輪循長輪循是對定時輪詢的改進(jìn)和提高,目地是為了降低無效的網(wǎng)絡(luò)傳輸。是規(guī)范的一部分,它是一種流技術(shù),它的規(guī)范由兩部分組成,第一個部分是服務(wù)器端與瀏覽器端之間的通訊協(xié)議,第二部分則是在瀏覽器端提供使用的對象。下一篇之客戶端與服務(wù)器端的交互二 1. 長鏈接技術(shù)介紹 說到websocket,必須講到在它之前的各種長鏈接技術(shù),比如輪循,長輪循,sse等。長鏈接顧名思義,就是讓客戶端瀏覽器與服務(wù)...

    myshell 評論0 收藏0
  • swoole——從入門到放棄(一)

    摘要:進(jìn)程可以使用函數(shù)向進(jìn)程投遞新的任務(wù)。當(dāng)前的進(jìn)程在調(diào)用回調(diào)函數(shù)時會將進(jìn)程狀態(tài)切換為忙碌,這時將不再接收新的,當(dāng)函數(shù)返回時會將進(jìn)程狀態(tài)切換為空閑然后繼續(xù)接收新的。當(dāng)進(jìn)程投遞的任務(wù)在中完成時,進(jìn)程會通過方法將任務(wù)處理的結(jié)果發(fā)送給進(jìn)程。 swoole——從入門到放棄(一) 一、swoole的源碼包安裝 下載swoole源碼:git clone https://gitee.com/swoole...

    morgan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<