NodeJs實現(xiàn)跨域WebSocket即時通訊加強版
Socket.io
原生WebSocket API使用起來不太方便,我們使用Socket.io,它很好地封裝了webSocket接口,提供了更簡單、靈活的接口,也對不支持webSocket的瀏覽器提供了向下兼容。
- 服務(wù)端代碼
- 根據(jù)不同客戶端傳來的消息存儲一下 不同的對象
- 需要安裝 npm i socket.io --save
- 下載 socket.io.js
nodejs 代碼
const socket = require("socket.io"); const http = require('http'); // 創(chuàng)建服務(wù) const server = http.createServer((req,res)=>{ // 允許所有跨域請求 res.setHeader('Access-Control-Allow-Origin', '*'); req.writeHead(200,{'Content-Type':'text/html'}) res.end('') }).listen(8001) let pad = null,pc = null , padReady = false , pcReady = false; // 連接socket.io socket.listen(server).on('connection',(conn)=>{ conn.on('message',(str)=>{ if(str==="Pad"){ pad = conn; padReady = true; conn.send('連接成功'); } if(str==="PC"){ pc = conn; pcReady = true; } if(padReady&&pcReady){ if(str==='PC') str='我是PC界面' pc.send(str); } }) conn.on("disconnection",(code, reason) => { console.log("關(guān)閉連接") }); })
pad.html 代碼
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .kuang { text-align: center; margin-top: 200px; } #mess { text-align: center } .value { width: 200px; height: 200px; border: 1px solid; text-align: center; line-height: 200px; display: inline-block; } </style> </head> <body> <div id="mess">正在連接...</div> <div class="kuang"> <div class="value" id="value1">aaaaaaa</div> <div class="value" id="value2">bbbbbbb</div> <div class="value" id="value3">ccccccc</div> </div> <script src="./js/socket.io.js"></script> <script> // 跨域地址 const socket = io('192.168.1.115:8001') socket.on('connect', () => { // 連接成功 socket.send('Pad') // 監(jiān)聽連接 socket.on('message', (msg) => { document.getElementById('mess').innerHTML=msg // console.log(msg) }) // 關(guān)閉連接 socket.on('disconnect', () => { }) }) document.querySelector(".kuang").onclick = (e)=> { socket.send(e.target.innerHTML); } </script> </body> </html>
pc.html 代碼
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .kuang { text-align: center; margin-top: 200px; } #mess { text-align: center } </style> </head> <body> <div id="mess"></div> <script src="./js/socket.io.js"></script> <script> var mess = document.getElementById("mess"); // 跨域地址 // TODO: 這里注意一下 不能寫127.0.0.1 或者localhost 不然其他客戶端訪問不到 const socket = io('192.168.1.115:8001') socket.on('connect', () => { // 連接成功 socket.send('PC') // 監(jiān)聽連接 socket.on('message', (msg) => { mess.innerHTML = msg // console.log(msg) }) // 關(guān)閉連接 socket.on('disconnect', () => { }) }) </script> </body> </html>
以上就是NodeJs 【加強版】實現(xiàn)跨域WebSocket 即時通訊的詳細內(nèi)容,更多關(guān)于NodeJs跨域WebSocket即時通訊的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
參考EventEmitter實現(xiàn)完整訂閱發(fā)布功能函數(shù)
這篇文章主要為大家介紹了參考EventEmitter實現(xiàn)完整訂閱發(fā)布功能函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02Node實戰(zhàn)之不同環(huán)境下配置文件使用教程
這篇文章主要給大家介紹了關(guān)于Node實戰(zhàn)之不同環(huán)境下配置文件使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-01-01Node使用Puppeteer監(jiān)聽并打印網(wǎng)頁的接口請求
Puppeteer 是一個 Node 庫,它提供了高級的 API 來通過 DevTools 協(xié)議控制 Chrome 或 Chromium,本文我們就來看看如何使用Puppeteer監(jiān)聽并打印網(wǎng)頁的接口請求吧2025-04-04詳解nodejs express下使用redis管理session
本篇文章主要介紹了詳解nodejs express下使用redis管理session ,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04nodejs子進程child_process和cluster模塊深入解析
本文從node的單線程單進程的理解觸發(fā),介紹了child_process模塊和cluster模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09