前后端websocket交互流程

这篇博客展示了如何使用Node.js的'nodejs-websocket'库创建WebSocket服务器,并与HTML前端进行实时通信。后端通过监听不同事件来处理来自前端的消息,前端则利用WebSocket对象与服务器保持连接,实现数据的双向传输。当接收到特定消息时,后端会向前端发送相应的人物名称。
摘要由CSDN通过智能技术生成

node作为后端需使用中间件nodejs-websocket

var ws = require('nodejs-websocket');

console.log("开始建立连接...");

var server = ws.createServer(function (conn) {

  conn.on("connect", function (code) {
    console.log("开启连接" + code);
  });

  conn.on("text", function (result) {
    console.log("收到的信息为:" + result); //由Webtest.html中传来data 
    let a=''
    if (result == 1) {
      a="飞哥" //发送"success"至Webtest.html
    } else if (result == 2) {
      a="帆姐" //发送"success"至Webtest.html
    } else if (result == 3) {
      a='东哥'
    }else if(result==4){
      a="阳哥"
    }

//向前端发送消息
    conn.sendText(a);
  });

  conn.on("close", function (code) {
    console.log("关闭连接")
  });

  conn.on("error", function (code) {
    console.log("异常关闭")
  });
}).listen(8001);

console.log("WebSocket连接建立完毕");

前端

<!Doctype html>
<head>
    <meta charset="UTF-8">
    <title>WebSocket -- test</title>
</head>
<style>
    .block {
        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>
<body>
    <div id="mess">正在连接...</div>
    <div class="block">
        
     
            <textarea name="" id="value3" cols="30" rows="10"></textarea>
            <button id="cc">测试提交</button>

            <div id="ku"></div>
            
      
    </div>
 
    <script>
        var mess = document.getElementById("mess");
        var ku = document.getElementById("ku");
 
        if (window.WebSocket) {
            var ws = new WebSocket('ws://localhost:8001');
 
            ws.onopen = function (e) {
                console.log("连接服务器成功");
                ws.send("route"); //可以传递信息,进行连接确认
            }
            ws.onclose = function (e) {
                console.log("服务器关闭" + e.code); //服务器关闭1006
            }
            ws.onerror = function (e) {
                console.log("连接出错" + e.code); //连接出错 undefined
            }
 
            ws.onmessage = function (e) {
                mess.innerHTML = "连接成功";
                console.log("node 返回信息: " + e.data); //若连接成功,为 success
                let p=document.createElement('p')
                p.innerHTML=e.data
                ku.appendChild(p)

                document.getElementById("cc").onclick =  (e) =>{
                    let kk=window.document.getElementById("value3").value
                 //发送消息
                    ws.send(kk);
                }
            }
        }
    </script>
</body>
</html>

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值