• H5 WebSocket


      1 /**
      2             H5 Websocket
      3             http请求只能客户端单方便向服务器请求发送数据 短连接 轮询又太浪费资源
      4             websocket 实现全双通 长连接 用于前后端频繁交互的场景
      5 
      6             其他特点包括:
      7             (1)建立在 TCP 协议之上,服务器端的实现比较容易。
      8 
      9             (2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
     10 
     11             (3)数据格式比较轻量,性能开销小,通信高效。
     12 
     13             (4)可以发送文本,也可以发送二进制数据。
     14 
     15             (5)没有同源限制,客户端可以与任意服务器通信。
     16 
     17             (6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。
     18 
     19          */
     20 
     21         //创建WebScoket实例
     22         var ws = new WebSocket("wss://echo.websocket.org");
     23         //执行上面语句之后,客户端就会与服务端进行连接.
     24 
     25         /**
     26         ws.readyState 查看连接状态:
     27             CONNECTING: 值为0,表示正在连接。
     28             OPEN: 值为1,表示连接成功,可以通信了。
     29             CLOSING: 值为2,表示连接正在关闭。
     30             CLOSED: 值为3,表示连接已经关闭,或者打开连接失败。
     31          */
     32         console.log(ws.readyState);//0
     33 
     34 
     35         //实例对象的onopen属性,用于指定连接成功后的回调函数。
     36         ws.onopen = function()
     37         {
     38             console.log("connect socket...");
     39             console.log(ws.readyState);//1
     40 
     41             // 实例对象的send()方法用于向服务器发送数据。
     42             ws.send("send message");
     43         }
     44         //如果要指定多个回调函数,可以使用addEventListener方法。
     45         ws.addEventListener('open',function(){
     46             console.log("connect socket...");
     47             console.log(ws.readyState);//1
     48             ws.send("send message");
     49         });
     50 
     51 
     52         //实例对象的onmessage属性,用于指定收到服务器数据后的回调函数。
     53         ws.onmessage = function(evt)
     54         {
     55             console.log("message:" + evt.data);
     56             ws.close();
     57             console.log(ws.readyState);//2
     58         }
     59         
     60         
     61         //实例对象的onclose属性,用于指定连接关闭后的回调函数。
     62         ws.onclose = function()
     63         {
     64             console.log("socket close!");
     65             console.log(ws.readyState);//3
     66         }
     67         ws.addEventListener('close',function(){
     68             console.log("socket close!");
     69         });
     70 
     71 
     72         //实例对象的onerror属性,用于指定报错时的回调函数。
     73         ws.onerror = function()
     74         {
     75             console.log("socket error!");
     76         }
     77         ws.addEventListener('error',function(){
     78             console.log("socket error!");
     79         });
     80 
     81 
     82 
     83 
     84         //总结:实现连接其实就下面简单的几步
     85         var ws = new WebSocket("wss://echo.websocket.org");
     86         console.log(ws.readyState);
     87         ws.onopen = function()
     88         {
     89             console.log("已连接socket!");
     90             console.log(ws.readyState);
     91             ws.send("这是发送的消息...");
     92         }
     93 
     94         ws.onmessage = function(evt)
     95         {
     96             console.log("这是接收的信息:" + evt.data);
     97             ws.close();//关闭链接
     98             console.log(ws.readyState);
     99         }
    100 
    101         ws.onclose = function(evt)
    102         {
    103             console.log("连接已关闭!");
    104             console.log(ws.readyState);
    105         }

     测试地址:https://jsbin.com/qulihivalo/edit?js,console

     原文:http://www.ruanyifeng.com/blog/2017/05/websocket.html

    另外一篇讲的比较通透的文章:https://www.zhihu.com/question/20215561

  • 相关阅读:
    递归神经网络(RNN)简介(转载)
    递归神经网络入门教程(转载)
    向量叉积的几何意义(转)
    向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读
    完全搞懂傅里叶变换和小波(6)――傅立叶级数展开之函数项级数的性质
    完全搞懂傅里叶变换和小波(5)——傅立叶级数展开之函数项级数的概念
    完全搞懂傅里叶变换和小波(4)——欧拉公式及其证明
    完全搞懂傅里叶变换和小波(3)——泰勒公式及其证明
    完全搞懂傅里叶变换和小波(2)——三个中值定理<转载>
    完全搞懂傅里叶变换和小波(1)——总纲<转载>
  • 原文地址:https://www.cnblogs.com/sener/p/13995405.html
Copyright © 2020-2023  润新知