WebSocket协议

  • HTTP中一个request只能有一个response。而且这个response也是被动的,不能主动发起

    • 因此过去的服务端推送信息是通过客户端不停的轮询实现的
  • websocket是双向通信协议,提供了服务端主动推送信息的能力

    • 真正的全双工方式,建立连接后客户端与服务器端是完全平等的,可以互相主动请求
  • Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息

    • 无状态的HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)
  • 优势

    • 浏览器和服务端双向通信,更强的实时性
    • 服务器不再需要为每一个客户端起多个tcp连接
    • 更小的包头和首部开销
    • 更好的二进制支持
  • 默认端口也是 80443

  • 需要客户端(浏览器)和服务端同时支持

  • 如果经过代理(例如nignx) 的话,还需要代理支持

    • 代理可能在长时间无通信时会自动切断连接
      • 因此WS为了保证连接不被断掉,需要发送心跳包
    • 代理可能把WS连接握手当做一个不认识的 HTTP 请求从而拒绝掉
    • 有些代理会修改,去掉一些HTTP头部
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值