websocket详解

1. websocket 是什么?

websocket 是一种网络通信协议,与 http 语义一样,但功能不一样

http 也是一种网络通信协议,为什么不用 http 而用 websocket ?

2. websocket 与 http 有什么区别?

websocket 通信可由服务器发起,也可以由客户端发起。可以实现客户端与服务端长连接
http 通信只能由客户端发起。

3.websocket 用法:

// 1. 新建 WebSocket 实例, 客户端就会与服务器进行连接
// WebSocket() 会 return 一个 object.
const ws = new WebSocket("wss://echo.websocket.org")
 
// 2.开始连接,发送一些信息
ws.onopen = function(evt) { 
  console.log( "开始连接" );
  ws.send("客户端发送消息给服务器!");
};
 
// 3.连接成功,接收消息,准备断开连接
ws.onmessage = function(evt) {
  console.log("服务器返回数据给客户端");
  ws.close();
};
 
// 4.断开连接成功
ws.onclose = function(evt) {
  console.log("关闭了");
}; 

websocket 属性:

webSocket.onopen:用于指定连接成功后的回调函数。

webSocket.onmessage:用于从服务器接收到信息时的回调函数。

webSocket.onerror:用于指定连接失败后的回调函数。

webSocket.onclose:用于指定连接关闭后的回调函数。

webSocket.binaryType: 使用二进制的数据类型连接。

webSocket.url :WebSocket 的绝对路径(只读)

webSocket.protocol:服务器选择的下属协议(只读)

webSocket.bufferedAmount: 未发送至服务器的字节数。(只读)

webSocket.readyState : 实例对象的当前状态, 共有 4 种(只读)

CONNECTING:值为0,表示正在连接。
OPEN:值为1,表示连接成功,可以通信了。
CLOSING:值为2,表示连接正在关闭。
CLOSED:值为3,表示连接已经关闭,或者打开连接失败。
switch (ws.readyState) {
  case WebSocket.CONNECTING:
    // 正在连接中···
    break;
  case WebSocket.OPEN:
    // 连接成功,可以通信啦!
    break;
  case WebSocket.CLOSING:
    // 断开连接中···
    break;
  case WebSocket.CLOSED:
    // 断开连接啦!
    break;
  default:
    
    break;
}

3.2 websocket 方法:

webSocket.close([code[, reason]]) :关闭当前链接,

code: 可选,一个数字状态码,它解释了连接关闭的原因。如果没有传这个参数,默认使用 1005,抛出异常:INVALID_ACCESS_ERR,无效的 code.

reason 可选,一个人类可读的字符串,它解释了连接关闭的原因。这个 UTF-8 编码的字符串不能超过 123 个字节,抛出异常:SYNTAX_ERR,超出 123个字节。

webSocket.send(data) :发送数据到服务器。

2.3 websocket 事件:

open:连接成功时触发。 也可以通过 onopen 属性来设置。

message:收到数据时触发。 也可以通过 onmessage 属性来设置。

error:连接因错误而关闭时触发,例如无法发送数据时。 也可以通过 onerror 属性来设置。

close:连接被关闭时触发。 也可以通过 onclose 属性来设置。

created(){
    this.initWebSocket()
},
method:{
 
    //初始化websocket 
    initWebSocket() {
      this.websocket = new WebSocket("ws://localhost:12345"); //ws地址
      this.websocket.onopen = this.websocketonopen;
      this.websocket.onerror = this.websocketonerror;
      this.websocket.onmessage = this.websocketonmessage;
      this.websocket.onclose = this.websocketclose;
    },
    
    websocketonopen(){
        console.log('websocket打开')
        this.websocket.send('向服务端发送些数据',)
    },
 
    websocketonerror(e){
        console.log('websocket连接失败',e)
    },
    
    websocketonmessage(e){
        console.log('websocket连接成功,服务端返回些数据',e)
    },
 
    websocketclose(e){
        console.log('websocket断开连接',e)
    },
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值