国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【NodeJS】nodejs提供websocket服務

這篇具有很好參考價值的文章主要介紹了【NodeJS】nodejs提供websocket服務。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景

在開發(fā)業(yè)務系統(tǒng)的時候,根據(jù)開發(fā)人員不同的技術棧,會使用不同的技術來開發(fā)微服務。本文是基于NodeJS提供的websocket的服務。在websocket通過分片的方式將字符串進行切割傳遞。

正文

1、源碼

server.js:

const WebSocket = require('ws');
const server = new WebSocket.Server({ port: 8080 });
server.on('connection', (socket) => {  
  console.log('Client connected');

  // 模擬分片傳輸  
  var message = 'Hello, WebSocket!數(shù)據(jù)映射的方式有兩種:';  
  
  console.log(message.length);   
  
  const chunkSize = 5;  
  const totalChunks = Math.ceil(message.length / chunkSize);

  for (let i = 0; i < totalChunks; i++) {  
    const start = i * chunkSize;  
    const end = i === totalChunks - 1 ? message.length : start + chunkSize;  
    const chunk = message.slice(start, end);

    socket.send(chunk);  
    console.log(`Sending chunk ${i + 1}/${totalChunks} - ${chunk}`);  
  }

  socket.on('close', () => {  
    console.log('Client disconnected');  
  });  
});

console.log('Server is running on port 8080'); 

client.js:

const WebSocket = require('ws');

const ws = new WebSocket('ws://localhost:8080');

ws.on('open', () => {  
  console.log('連接已建立');

  // 發(fā)送握手請求  
  ws.send(  
    JSON.stringify({  
      Upgrade: 'websocket',  
      Connection: 'Upgrade',  
      //Sec_WebSocket_Accept: createSecWebSocketAccept(ws),  
    })  
  );

  // 發(fā)送分片消息  
  const message = 'Hello, WebSocket!';  
  const parts = chunk(message, 1024);  
  parts.forEach((part, index) => {  
    ws.send(JSON.stringify({ type: 'split', parts: [part], index: index }));  
  });

  // 接收響應  
  ws.on('message', (message) => {  
    //const data = JSON.parse(message);  
    //if (data.type === 'response') {  
    console.log('接收到的響應:', message);  
    //}  
  });

  // 關閉連接  
  ws.on('close', () => {  
    console.log('連接已關閉');  
  });  
});

function chunk(str, size) {  
  const chunks = [];  
  for (let i = 0; i < str.length; i += size) {  
    chunks.push(str.slice(i, i + size));  
  }  
  return chunks;  
}

function createSecWebSocketAccept(ws) {  
  const key = ws.url.split('=').pop();  
  const AcceptKey = WebSocket.createSecureContext().SecureSocket.prototype.sec_websocket_accept;  
  return AcceptKey.replace('$WS_KEY$', key);  
}

2、運行

1>、啟動server.js

執(zhí)行命令:

node server.js

運行效果:

【NodeJS】nodejs提供websocket服務,NodeJS,前端與vue,websocket,網(wǎng)絡協(xié)議,網(wǎng)絡,node.js

2>、啟動client.js

執(zhí)行命令:

node client.js

運行效果:

客戶端:

【NodeJS】nodejs提供websocket服務,NodeJS,前端與vue,websocket,網(wǎng)絡協(xié)議,網(wǎng)絡,node.js

服務端:

【NodeJS】nodejs提供websocket服務,NodeJS,前端與vue,websocket,網(wǎng)絡協(xié)議,網(wǎng)絡,node.js

3、擴展

Nodejs提供http服務,參考如下案例:文章來源地址http://www.zghlxwxcb.cn/news/detail-803070.html

const http = require("http");
 
const hostname = "127.0.0.1";
const port = 3000;
//創(chuàng)建HTTP服務器,并提供兩個對象,一個請求(http.IncomingMessage對象)和一個
//響應(http.ServerResponse對象)
const server = http.createServer((req, res) => {
    res.statusCode = 200;//設置statusCode屬性為200,以表相應成功
    res.setHeader("Content-Type", "text/plain");//設置Content-Type響應頭
    res.end("Hello World1111\n");//關閉響應,添加內(nèi)容作為end()的參數(shù)
})
//服務器啟動監(jiān)聽
server.listen(port, hostname, () => {
    console.log(`服務器運行在http://${hostname}:${port}/`);
})

到了這里,關于【NodeJS】nodejs提供websocket服務的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • nodejs 實現(xiàn)MQTT協(xié)議的服務器端和客戶端的雙向交互

    nodejs 實現(xiàn)MQTT協(xié)議的服務器端和客戶端的雙向交互

    公司和第三方合作開發(fā)一個傳感器項目,想要通過電腦或者手機去控制項目現(xiàn)場的傳感器控制情況?,F(xiàn)在的最大問題在于,現(xiàn)場的邊緣終端設備接入的公網(wǎng)方式是無線接入,無法獲取固定IP,所以常規(guī)的HTTP協(xié)議通信就沒法做,現(xiàn)在打算使用MQTT來實現(xiàn)云平臺和邊緣終端(傳感器

    2024年02月05日
    瀏覽(29)
  • vue3+nodejs(websocket)實現(xiàn)監(jiān)控拉rtsp流,使用flv.js+ffmpeg包(主要建立websocket是為了轉(zhuǎn)碼傳流)

    vue3+nodejs(websocket)實現(xiàn)監(jiān)控拉rtsp流,使用flv.js+ffmpeg包(主要建立websocket是為了轉(zhuǎn)碼傳流)

    關于拉取監(jiān)控攝像頭的流,我個人去查了很多資料,也是因為之前沒有接觸過這一模塊,加上目前公司也沒有后端去寫接口,所以我直接用node去寫websocket,與前端建立起通信,能夠進行后續(xù)轉(zhuǎn)碼、傳流,能夠?qū)崿F(xiàn)實時播放監(jiān)控畫面。 這里的rtsp流是要事先知道的,監(jiān)控的這個

    2024年02月20日
    瀏覽(26)
  • 【微服務部署】四、Jenkins一鍵打包部署NodeJS(Vue)前端項目步驟詳解

    【微服務部署】四、Jenkins一鍵打包部署NodeJS(Vue)前端項目步驟詳解

    ??本文介紹使用Jenkins一鍵將NodeJS(Vue)前端項目打包并上傳到生產(chǎn)環(huán)境服務器,這里使用的是直接打包靜態(tài)頁面,發(fā)送到遠程服務器Nginx配置目錄的方式,首先確保服務器環(huán)境配置好,安裝Nginx,運行目錄,日志存放目錄等。 一、服務器環(huán)境配置 ??Nginx安裝也有多種方式

    2024年02月10日
    瀏覽(24)
  • mac制作ssl證書|生成自簽名證書,nodejs+express在mac上搭建https+wss(websocket)服務器

    mac制作ssl證書|生成自簽名證書,nodejs+express在mac上搭建https+wss(websocket)服務器

    mac 自帶 openssl 所以沒必要像 windows 一樣先安裝 openssl,直接生成即可 生成 key 讓輸入兩次密碼,隨便,但是兩次得是一樣的 移除密碼 生成 csr Country Name (2 letter code) [ 國家 ]:CN State or Province Name (full name) [ 省份 ]:Beijing Locality Name (eg, city) [ 城市 ]:Beijing Organization Name (eg, company)

    2024年02月09日
    瀏覽(19)
  • vane 一個適用于前端打工人的全??蚣?nodejs+vue3+typescript

    vane 一個適用于前端打工人的全??蚣?nodejs+vue3+typescript

    寫這個的初衷是因為每次用node寫接口的時候總是需要一些寫大一堆的東西, 也有些人把很多接口都放在一個js文件內(nèi), 看起來很是雜亂, 后來用到nuxt寫的時候, 感覺用文件名來命名接口路徑很是方便, 無論是query參數(shù)還是params參數(shù),都可以通過文件名來命名, 也可以通過文件夾層級

    2024年02月11日
    瀏覽(19)
  • 微信小程序nodejs+vue社區(qū)居民健康服務系統(tǒng)uniapp

    微信小程序nodejs+vue社區(qū)居民健康服務系統(tǒng)uniapp

    ? 系統(tǒng)分為社區(qū)居民,管理員,縣區(qū)工作員,社區(qū)工作員三個角色 縣區(qū)工作員的主要功能: 1.對社區(qū)的工作人員進行添加,修改,刪除,查詢 2.疫情專欄的信息進行添加,修改,刪除,查詢 3.對官方的通告信息進行添加,修改,刪除,查詢 社區(qū)工作員的主要功能: 1.對社區(qū)

    2024年02月06日
    瀏覽(31)
  • vue+elementui+nodejs校園生活信息服務快遞系統(tǒng)v62911

    vue+elementui+nodejs校園生活信息服務快遞系統(tǒng)v62911

    ?語言 node.js 框架:Express 前端:Vue.js 數(shù)據(jù)庫:mysql? 數(shù)據(jù)庫工具:Navicat 開發(fā)軟件:VScode? 學生登錄,學生通過填寫用戶名、密碼、權限等信息,輸入完成后選擇登錄即可進入校園快領服務系統(tǒng) 學生登錄進入校園快領服務系統(tǒng)可以查看首頁、個人中心、快遞信息管理、取貨信

    2024年02月05日
    瀏覽(25)
  • 發(fā)現(xiàn)一個開源的Chatgpt-web應用,前端使用vue編寫,后端也是nodejs代碼編寫的。

    發(fā)現(xiàn)一個開源的Chatgpt-web應用,前端使用vue編寫,后端也是nodejs代碼編寫的。

    演示視頻: https://www.bilibili.com/video/BV1WC4y1k7j5/?vd_source=4b290247452adda4e56d84b659b0c8a2 【chatglm3】(10):使用fastchat本地部署chatlgm3-6b模型,并配合chatgpt-web的漂亮界面做展示,調(diào)用成功,vue的開源項目 部署腳本和方法: https://gitee.com/fly-llm/dify-mysql-llm/tree/master/fastchat-docker-compose ht

    2024年02月11日
    瀏覽(35)
  • nodejs項目實戰(zhàn)教程01——http服務和URL類,前端開發(fā)社招面試解答之性能優(yōu)化

    nodejs項目實戰(zhàn)教程01——http服務和URL類,前端開發(fā)社招面試解答之性能優(yōu)化

    需要在終端重新執(zhí)行一次node app.js瀏覽器的內(nèi)容才會刷新 4.如何獲取url中的參數(shù) ============================================================================ 4.1 URL類基礎 建議大家可以先看看Node.js API文檔中的url 網(wǎng)址部分,這里做簡要說明。url字符串在nodejs的url模塊,有兩種解析API,其中舊版的

    2024年04月11日
    瀏覽(28)
  • nodejs實現(xiàn)前后端websocket通信+心跳示例

    nodejs后端代碼? server.js 直接在文件所在目錄打開cmd窗口,啟動服務: node server.js 瀏覽器端? index.html 在本地直接運行瀏覽器即可! 如果有幫助,就點個贊再走 ^? ^ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    2024年02月13日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包