关于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>

 

posted @ 2019-08-13 18:06  javascript9527  阅读(308)  评论(0编辑  收藏  举报