• 前端 websocket用法


    <!DOCTYPE html>  
    <meta charset="utf-8" />  
    <title>WebSocket Test</title>  
    <script language="javascript"type="text/javascript">  
        var wsUri ="ws://echo.websocket.org/"; 
        var output;  
        
        function init() { 
            output = document.getElementById("output"); 
            testWebSocket(); 
        }  
     
        function testWebSocket() { 
            websocket = new WebSocket(wsUri); 
            websocket.onopen = function(evt) { 
                onOpen(evt) 
            }; 
            websocket.onclose = function(evt) { 
                onClose(evt) 
            }; 
            websocket.onmessage = function(evt) { 
                onMessage(evt) 
            }; 
            websocket.onerror = function(evt) { 
                onError(evt) 
            }; 
        }  
     
        function onOpen(evt) { 
            writeToScreen("CONNECTED"); 
            doSend("WebSocket rocks"); 
        }  
     
        function onClose(evt) { 
            writeToScreen("DISCONNECTED"); 
        }  
     
        function onMessage(evt) { 
            writeToScreen('<span style="color: blue;">RESPONSE: '+ evt.data+'</span>'); 
            websocket.close(); 
        }  
     
        function onError(evt) { 
            writeToScreen('<span style="color: red;">ERROR:</span> '+ evt.data); 
        }  
     
        function doSend(message) { 
            writeToScreen("SENT: " + message);  
            websocket.send(message); 
        }  
     
        function writeToScreen(message) { 
            var pre = document.createElement("p"); 
            pre.style.wordWrap = "break-word"; 
            pre.innerHTML = message; 
            output.appendChild(pre); 
        }  
     
        window.addEventListener("load", init, false);  
    </script>  
    <h2>WebSocket Test</h2>  
    <div id="output"></div>  
    </html>

    主要代码解读:

    申请一个WebSocket对象,参数是需要连接的服务器端的地址,同http协议使用http://开头一样,WebSocket协议的URL使用ws://开头,另外安全的WebSocket协议使用wss://开头。。

    var wsUri ="ws://echo.websocket.org/";
    websocket = new WebSocket(wsUri);

    WebSocket对象一共支持四个消息 onopen, onmessage, onclose和onerror,

    我们可以看出所有的操作都是采用消息的方式触发的,这样就不会阻塞UI,使得UI有更快的响应时间,得到更好的用户体验。

    当Browser和WebSocketServer连接成功后,会触发onopen消息;

    websocket.onopen = function(evt) {
    };

    如果连接失败,发送、接收数据失败或者处理数据出现错误,browser会触发onerror消息;

    websocket.onerror = function(evt) {
    };

    当Browser接收到WebSocketServer发送过来的数据时,就会触发onmessage消息,参数evt中包含server传输过来的数据;

    websocket.onmessage = function(evt) {
    };

    当Browser接收到WebSocketServer端发送的关闭连接请求时,就会触发onclose消息。

    websocket.onclose = function(evt) {
    };

    WebSocket与TCP、HTTP的关系WebSocket与http协议一样都是基于TCP的,所以他们都是可靠的协议,Web开发者调用的WebSocket的send函数在browser的实现中最终都是通过TCP的系统接口进行传输的。

    WebSocket和Http协议一样都属于应用层的协议,那么他们之间有没有什么关系呢?答案是肯定的,WebSocket在建立握手连接时,数据是通过http协议传输的,但是在建立连接之后,真正的数据传输阶段是不需要http协议参与的。

  • 相关阅读:
    T6-Tensorboard 可视化之训练过程
    T5-tensorboard 可视化之图层
    T4-分类学习 classification
    P1-Python3 爬虫实战之糗事百科段子
    iOS之NavigationBar随滑动隐藏或显示
    iOS 之UIButton左文右图
    iOS 之图片尺寸
    iOS 之各种Crash
    公司开发者账号申请(包括邓白氏码申请)
    iOS之滑动隐藏导航
  • 原文地址:https://www.cnblogs.com/luoxiaowei/p/6952104.html
Copyright © 2020-2023  润新知