• webSocket是什么?


    webSocket是H5的新协议,基于tcp协议,实现浏览器与客户端的双工通信。解决了http协议只能由客户端向服务发送请求的弊端,替代长轮询节省带宽和资源。(多于见聊天室)

    一、客户端示例

    var ws=new webSocket("ws://echo.webSocket.org");

    ws.open =function(event){

      console.log("connection open");

      ws.send("Hello webSocket")

    }

    ws.onmessage=function(event){

      ws.close()

    }

    ws.onclose=function(event){

      console.log("connection closed")

    }

    二、客户端的API

    2.1webSocket构造函数

    webSocket对象作为一个构造函数,用于新建webSocket实例

    var ws=webSocket(“ws://localhost:8080”);客户端与服务器进行链接

    2.2webSocket.readyState属性返回实例对象的状态:4

    CONNECTING:值为0,表示正在连接

    OPEN:值为1,表示连接成功,可以通信了

    CLOSING:值为2,表示连接正在关闭

    CLOSED:值为3,表示连接已关闭,或者打开连接失败

    switchws.readyState{

    case webSocket.connecting : //do something

      break;

    case webSocket.open://do something

    break;

    case webSocket.closing://do something

      break;

    case webSocket.closed://do something

    break;

    Default://do something

      break;

    }

    2.3webSocket.onopen属性,用于指定连接成功后的回调函数

     ws.onopen=function(){

    ws.send(‘Hello Server’);

    }

    指定多个回调函数方法:

    ws.addEventListener(‘open’,function(event){

    ws.send(“Hello server”)

    });

    2.4webSocket.onclose属性,用于指定链接关闭后的回调函数

    ws.onclose=function(event){

    var code=event.code;

    var reason=event.resson;

    var wasClean=event.wasClean;

    }

    ws.addEventListener("close", function(event) {

      var code = event.code;

      var reason = event.reason;

      var wasClean = event.wasClean;

     });

    2.5webSocket.onmessage属性,用于指定收到服务器数据后的回调函数

    ws.onmessage = function(event) {

      var data = event.data;

      };

    ws.addEventListener("message", function(event) {

      var data = event.data;

     });

    注意:服务器数据可能是文本,也可能是二进制数据(blob对象或者Arraybuffer

    ws.onmessage = function(event){

      if(typeof event.data === String) {

        console.log("Received data string");

      }

      if(event.data instanceof ArrayBuffer){

        var buffer = event.data;

        console.log("Received arraybuffer");

      }}

    还可以用binaryType属性,显示指定收到的二进制数据类型

    // 收到的是 blob 数据

    ws.binaryType = "blob";

    ws.onmessage = function(e) {

      console.log(e.data.size);

    };

    // 收到的是 ArrayBuffer 数据

    ws.binaryType = "arraybuffer";

    ws.onmessage = function(e) {

      console.log(e.data.byteLength);

    };

    2.6webSocket.send()用于向服务器发送数据

    ws.send(“yours message”)

    发送blob对象的例子

    var file=document.querySelector(‘input[type=”file”]’).files[0];

    ws.send(file);

    发送 ArrayBuffer 对象的例子。

    var img=canvas_context.getImageData(0,0,400,320);

    var binary = new Uint8Array(img.data.length);

    for (var i = 0; i < img.data.length; i++) {

      binary[i] = img.data[i];

    }

    ws.send(binary.buffer);

    2.7webSocket.bufferedAmount属性表示有多少二进制的数据没有发出去,可以用来判断发送是否结束

    var data=new Arraybuffer(10000);

    webSocket.send(data);

    If(websocket.bufferedAmount===0){

    //发送完毕

    }else{

    //发送未结束

    }

    2.8webSocket.onerror属性,用于指定报错时的回调函数

    webSocket.onerror=function(){

    //handle error event

    }

    webSocket.addEventListener (“error”,function(event){

    //handle error event

    })

  • 相关阅读:
    POJ
    POJ
    POJ
    POJ-1797 Heavy Transportation
    POJ
    HDU
    CF-576 C MP3 (离散化)
    Pandas 用法汇总
    Pandas 的使用
    Numpy 算术函数
  • 原文地址:https://www.cnblogs.com/wangpengfei8313/p/8316473.html
Copyright © 2020-2023  润新知