NodeJs实现跨域WebSocket即时通讯加强版

 更新时间:2023年11月09日 09:39:08   作者: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即时通讯的资料请关注脚本之家其它相关文章!

相关文章

  • 修改node.js默认的npm安装目录实例

    修改node.js默认的npm安装目录实例

    今天小编就为大家分享一篇修改node.js默认的npm安装目录实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 如何在NestJS中添加对Stripe的WebHook验证详解

    如何在NestJS中添加对Stripe的WebHook验证详解

    这篇文章主要为大家介绍了如何在NestJS中添加对Stripe的WebHook验证详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • nvm管理node版本的详细图文教程

    nvm管理node版本的详细图文教程

    nvm全英文也叫node.js version management,是一个nodejs的版本管理工具,下面这篇文章主要给大家介绍了关于nvm管理node版本的详细图文教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • nodejs中函数的调用实例详解

    nodejs中函数的调用实例详解

    本文通过实例代码给大家介绍了nodejs函数的调用,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • Node.js的路由、EJS模板引擎、GET和POST请求讲解

    Node.js的路由、EJS模板引擎、GET和POST请求讲解

    这篇文章介绍了Node.js的路由、EJS模板引擎、GET和POST请求,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Linux环境部署node服务并启动详细步骤

    Linux环境部署node服务并启动详细步骤

    最近用node.js开发了一个web项目,下面这篇文章主要给大家介绍了关于Linux环境部署node服务并启动的详细步骤,文中通过图文以及示例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 用node.js写一个jenkins发版脚本

    用node.js写一个jenkins发版脚本

    这篇文章主要介绍了用node.js写一个jenkins发版脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • node.js基于fs模块对系统文件及目录进行读写操作的方法详解

    node.js基于fs模块对系统文件及目录进行读写操作的方法详解

    这篇文章主要介绍了node.js基于fs模块对系统文件及目录进行读写操作的方法,结合实例形式分析了nodejs使用fs模块针对文件与目录的读写、创建、删除等相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)

    Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not

    这篇文章主要介绍了Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted),非常具有实用价值,需要的朋友可以参考下
    2017-12-12
  • Node.js 实现远程桌面监控的方法步骤

    Node.js 实现远程桌面监控的方法步骤

    这篇文章主要介绍了Node.js 实现远程桌面监控的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07

最新评论