最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js之構(gòu)建WebSocket服務(wù)全過程

 更新時(shí)間:2024年09月06日 13:25:38   作者:一介白衣ing  
這篇文章主要介紹了Node.js之構(gòu)建WebSocket服務(wù)全過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

WebSocket簡介

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

它有如下特點(diǎn):

  • 基于TCP,客戶端和服務(wù)端只建立一個(gè)TCP連接。
  • 服務(wù)端可以主動向客戶端發(fā)送消息。
  • 采用了二進(jìn)制幀結(jié)構(gòu),不具備HTTP/2多路復(fù)用、優(yōu)先級等特性
  • 更輕量的協(xié)議頭,減少數(shù)據(jù)傳輸量。
  • WebSocket握手包的報(bào)文格式必須符合HTTP報(bào)文格式的規(guī)范

客戶端和服務(wù)端的簡單實(shí)現(xiàn)

服務(wù)端

服務(wù)端我們使用nodejs-websocket包來實(shí)現(xiàn)。

const ws = require("nodejs-websocket");
const server = ws.createServer(function (socket) {
  // 讀取字符串消息,事件名稱為:text
  var count = 1;
  socket.on("text", function (str) {
    // 在控制臺輸出前端傳來的消息
    console.log(str);
    //向前端回復(fù)消息

    setInterval(() => {
      socket.sendText("服務(wù)器端收到客戶端發(fā)來的消息" + str + count++);
    }, 2000);
  });

  socket.on("error", () => {
    console.log("err");
  });
});

server.listen(3000, () => {
  console.log("connected...");
});

nodejs-websocket包讀取字符串事件為text,發(fā)送字符串到客戶端方法為sendText()

還有其他方法和事件請閱讀源碼。

運(yùn)行上邊的代碼,啟動服務(wù)

客戶端

const WebSocket = require("ws");
const ws = new WebSocket("ws://localhost:3000/");

ws.onopen = function () {
  setInterval(function () {
    ws.send("客戶端消息");
  }, 2000);
};

ws.onmessage = function (e) {
  console.log(e.data);
};

當(dāng)然,這段代碼也可以在瀏覽器直接運(yùn)行(不需要引入ws包)。

我們使用定時(shí)器模擬消息的實(shí)時(shí)發(fā)送,來觀察客戶端和服務(wù)端消息的通訊過程。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

河北区| 团风县| 大足县| 调兵山市| 文成县| 大理市| 思南县| 佛坪县| 健康| 阜新| 城步| 青州市| 海丰县| 辉南县| 泊头市| 揭东县| 安义县| 阿瓦提县| 武川县| 盐边县| 定西市| 黄山市| 吴堡县| 尚志市| 阳新县| 英吉沙县| 将乐县| 新巴尔虎右旗| 嘉鱼县| 西乌珠穆沁旗| 宝兴县| 沧州市| 平邑县| 云浮市| 于田县| 台北县| 龙口市| 新田县| 云安县| 兴义市| 仁布县|