NodeJs实现跨域WebSocket即时通讯加强版
作者:playboy5566
这篇文章主要为大家介绍了NodeJs实现跨域WebSocket即时通讯加强版示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
Socket.io
原生WebSocket API使用起来不太方便,我们使用Socket.io,它很好地封装了webSocket接口,提供了更简单、灵活的接口,也对不支持webSocket的浏览器提供了向下兼容。
- 服务端代码
- 根据不同客户端传来的消息存储一下 不同的对象
- 需要安装 npm i socket.io --save
- 下载 socket.io.js
nodejs 代码
const socket = require("socket.io"); const http = require('http'); // 创建服务 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("关闭连接") }); })
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') // 监听连接 socket.on('message', (msg) => { document.getElementById('mess').innerHTML=msg // console.log(msg) }) // 关闭连接 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') // 监听连接 socket.on('message', (msg) => { mess.innerHTML = msg // console.log(msg) }) // 关闭连接 socket.on('disconnect', () => { }) }) </script> </body> </html>
以上就是NodeJs 【加强版】实现跨域WebSocket 即时通讯的详细内容,更多关于NodeJs跨域WebSocket即时通讯的资料请关注脚本之家其它相关文章!