国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

WebSocket入門

jiekechoo / 3302人閱讀

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

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

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

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

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

瀏覽器通過 JavaScript 向服務(wù)器發(fā)出建立 WebSocket 連接的請(qǐng)求,連接建立以后,客戶端和服務(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ā)送一個(gè)消息
  socket.send("這是客戶端發(fā)給服務(wù)器的消息");
}

// 綁定事件是用加屬性的方式
socket.onmessage = function (res) {
  console.log("收到服務(wù)器端的響應(yīng)是", res);
}
// server side file
/* npm i ws -S */
/* 用ws模塊啟動(dòng)一個(gè)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ā)送到客服端的信息");
    })
})

簡(jiǎn)單模擬智能客服聊天





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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/109233.html

相關(guān)文章

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

    時(shí)間: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ū)動(dòng)、異步非阻塞的IO Java開源框架 基于NIO的客戶...

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

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

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

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

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

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

    morgan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<