WebSocket - 关闭连接

  • 简述

    Close事件标志着服务器和客户端之间的通信结束。可以在onclose事件的帮助下关闭连接。在onclose事件的帮助下标记通信结束后,服务器和客户端之间无法进一步传输任何消息。关闭事件也可能由于连接不良而发生。
    close()方法代表再见握手。它终止连接,除非连接再次打开,否则无法交换数据。
    与前面的示例类似,当用户单击第二个按钮时,我们调用close()方法。
    
    var textView = document.getElementById("text-view");
    var buttonStop = document.getElementById("stop-button");
    buttonStop.onclick = function() {
       // Close the connection, if open.
       if (socket.readyState === WebSocket.OPEN) {
          socket.close();
       }
    }
    
    也可以传递我们前面提到的code和reason参数,如下图。
    
    socket.close(1000, "Deliberate disconnection");
    
    以下代码完整概述了如何关闭或断开 Web Socket 连接 -
    
    <!DOCTYPE html>
    <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 断开连接