实时通信:WebSocket

21 篇文章 0 订阅
5 篇文章 0 订阅

1. 简介

WebSocket 对象提供了用于创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据的 API。
构造函数:WebSocket(url[, protocols])

2. 属性

  • WebSocket.binaryType
    使用二进制的数据类型连接。

  • WebSocket.bufferedAmount 只读
    未发送至服务器的字节数。

  • WebSocket.extensions 只读
    服务器选择的扩展。

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

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

  • WebSocket.onmessage
    用于指定当从服务器接受到信息时的回调函数。

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

  • WebSocket.protocol 只读
    服务器选择的下属协议。

  • WebSocket.readyState 只读
    当前的链接状态。

  • WebSocket.url 只读
    WebSocket 的绝对路径。

3. 方法

  • WebSocket.close([code[, reason]])
    关闭当前链接。

  • WebSocket.send(data)
    对要传输的数据进行排队。

4. 事件

使用 addEventListener() 或将一个事件监听器赋值给本接口的 oneventname 属性,来监听下面的事件。

  • close
    当一个 WebSocket 连接被关闭时触发。 也可以通过 onclose 属性来设置。
  • error
    当一个 WebSocket 连接因错误而关闭时触发,例如无法发送数据时。 也可以通过 onerror 属性来设置。
  • message
    当通过 WebSocket 收到数据时触发。 也可以通过 onmessage 属性来设置。
  • open
    当一个 WebSocket 连接成功时触发。 也可以通过 onopen 属性来设置。

5. 示例

// 创建 WebSocket 连接.
const socket = new WebSocket('ws://localhost:8080');

// 连接成功时触发
socket.addEventListener('open', function (event) {
    socket.send('Hello Server!');
});

// 收到数据时触发
socket.addEventListener('message', function (event) {
    console.log('Message from server ', event.data);
});

6. 与HTTP协议的异同

  • 相同点:
    • 都是 TCP 协议;
    • 都使用 Request/Response 模型进行连接的建立;
    • websocket 是基于 http 的,他们的兼容性都很好;
    • 在连接的建立过程中对错误的处理方式相同;
    • 都可以在网络中传输数据。
  • 不同点:
    • websocket 是持久连接,http 是短连接;
    • websocket 的协议是以 ws/wss 开头,http 对应的是 http/https;
    • websocket 是有状态的,http 是无状态的;
    • websocket 连接之后服务器和客户端可以双向发送数据,http 只能是客户端发起一次请求之后,服务器才能返回数据;
    • websocket 是可以跨域的;
    • websocket 连接建立之后,数据的传输使用帧来传递,不再需要Request消息。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

激洪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值