zoukankan      html  css  js  c++  java
  • 关于websocket


    http 协议:
        http 协议:超文本传输协议
        http协议作用:传输网页资源(html/css/js/mp3/mp4/..)
        http 工作方式:请求和响应
          必须是客户端先发起请求,服务器端才会有响应,而且一次请求一次响应

    问题:

      有一次应用场景下不适合使用http协议,比如: 金融行业:[股神:走势],这时候就需要webScoket了。



    webSocket 协议

        webSoket是H5的一个新特性,它实现了浏览器端与服务器端的双向通信,并且它支持跨域访问
        webSocket作用:网络之间传输数据
        webSocket工作方式:广播和收听
        浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输
        webSocket适用场景:股票走势图/聊天室
    webSocket在客户端实现
        创建webSocket对象
        var ws = new WebSocket("ws://127.0.0.1:9001");
        ws:协议名称
        9001:webSocket服务器默认端口


        -接收webSocket服务器数据
        ws.onmessage = function(e){e.data}


        -向服务器发送数据
        ws.send(stringMsg);
        -关闭连接
        ws.close();

    webSocket的使用,需要配合服务端。

    例子:

    搭建一个node服务器,配置好websocket

     1 //02_ws_server.js
     2 //node.js ws 服务器
     3 //1:下载ws模块 npm i ws
     4 //2:引入ws模块
     5 const ws = require("ws");
     6 //3:创建ws服务器并且指定端口 8888
     7 var server = new ws.Server({port:8888});
     8 console.log("ws 服务器开始监听端口");
     9 
    10 
    11 //4:绑定事件 connection 客户端连接事件 (只要有客户端连接过来,就会触发这个事件)
    12 server.on("connection",(socket)=>{
    13   console.log("ws 服务器接收连接");
    14   //5:服务器不停向客户端发送数据 定时器
    15   var counter = 1;
    16   var timer = setInterval(function(){
    17     counter++;
    18     socket.send("I am Server - "+counter);//将数据发送给客户端,每一秒发一次
    19   },1000);
    20   //6:服务器接收客户端数据
    21   socket.on("message",(msg)=>{
    22     console.log("服务器接收到消息"+msg);
    23   });
    24   //7:如果客户端发来断开连接请求停止定时器
    25   socket.on("close",()=>{
    26     console.log("客户端断开连接...");
    27     clearInterval(timer);
    28   })
    29 });

    前端代码

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4       <meta charset="UTF-8">
     5       <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6       <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7       <title>Document</title>
     8 </head>
     9 <body>
    10       <button id="btn1" onclick="handle1()">接收服务器数据</button><br>
    11       <button id="btn1" onclick="handle2()">向服务器发送信息</button><br>
    12       <button id="btn1" onclick="handle3()">关闭连接</button><br>
    13       <script>
    14             //创建变量保存webSocket对象
    15             var   c = new WebSocket('ws://localhost:8888')//创建连接
    16             // 创建连接,接收服务器返回来的数据
    17             function handle1(){
    18                   c.onmessage=function(e){//接收数据
    19                         console.log(e.data)//e.data,服务器返回的数据
    20                   }
    21             }
    22 
    23 
    24 
    25             // 创建连接,向服务器发送数据
    26             function handle2(){
    27                   c.send('我是前端小白')//向服务器端发送的数据
    28 
    29             }
    30 
    31             
    32             //断开连接
    33             function handle3(){
    34                   c.close()
    35             }
    36       </script>
    37 </body>
    38 </html>
  • 相关阅读:
    使用union all 遇到的问题(俩条sql语句行数的和 不等于union all 后的 行数的和 !);遗留问题 怎么找到 相差的呐俩条数据 ?
    78W的数据使用forall 进行批量转移;
    oracle 不能是用变量来作为列名和表名 ,但使用动态sql可以;
    oracle 查询优化及sql改写
    (十三)Jmeter之Bean Shell 的使用(二)
    (十二)Jmeter之Bean Shell的使用(一)
    (十一)Jmeter另一种调试工具 HTTP Mirror Server
    Image Processing and Computer Vision_Review:A survey of recent advances in visual feature detection(Author's Accepted Manuscript)——2014.08
    Image Processing and Computer Vision_Review:Local Invariant Feature Detectors: A Survey——2007.11
    Image Processing and Computer Vision_Review:A survey of recent advances in visual feature detection—2014.08
  • 原文地址:https://www.cnblogs.com/javascript9527/p/11347620.html
Copyright © 2011-2022 走看看