博客
关于我
微信小程序网络之WebSocket(场景篇)(6)
阅读量:144 次
发布时间:2019-02-28

本文共 1767 字,大约阅读时间需要 5 分钟。

WebSocket 是一种基于 TCP 协议的网络通信协议,自 2011 年被 IETF 定为标准 RFC 6455,并在 RFC 7936 中得到补充。WebSocket 的 API 已经被 W3C 定为标准。与 HTTP 的唯一关联是通过 HTTP 协议的 101 状态码进行协议切换,WebSocket 使用的 TCP 端口是 80,这使得它能够绕过大多数防火墙的限制。

WebSocket 的核心优势在于它允许客户端和服务器之间建立持久连接。一旦握手成功,数据可以双向传输,服务器可以主动推送数据到客户端,无需客户端进行请求。这与 HTTP 的被动通信模式形成了鲜明对比。

WebSocket 的误区

  • 标准但不局限于 HTML:WebSocket 是一种标准协议,但并不意味着它只能在基于浏览器的应用中使用。它可以在任何需要实时数据通信的应用中应用。

  • 与 Node.js 的关系:WebSocket 与 Node.js 并没有必然的联系。Node.js 只是提供了一种更便捷的实现方式。

  • WebSocket 的使用场景

    WebSocket 的优势在于支持实时数据交换,并且被所有现代浏览器支持。以下是一些典型使用场景:

  • 社交订阅:用户可以实时了解朋友的动态,例如家庭成员的重大消息或朋友的订婚消息,而不需要等待多分钟的延迟。

  • 多玩家游戏:在不依赖插件的情况下,WebSocket 允许开发者在浏览器中实现高性能的游戏互动,确保玩家动作的实时反馈。

  • 协同编辑与编程:WebSocket 适用于分布式开发团队,允许团队成员在同一文档上进行实时协作,避免版本控制的复杂性。

  • 点击流数据:WebSocket 可以高效收集用户与网站的互动数据,例如鼠标移动轨迹或页面点击记录,便于后续分析。

  • 股票基金报价:WebSocket 支持实时更新股票和基金价格,确保用户获得最新的市场动态。

  • 体育实况更新:WebSocket 可以提供实时的比赛进展,满足运动迷对最新动态的渴望。

  • 多媒体聊天:结合 getUserMedia API 和 HTML5 音视频元素,WebSocket 可以实现高效的实时视频会议。

  • 基于位置的应用:WebSocket 可以实时更新用户位置数据,例如运动员的训练数据,提高数据传输效率。

  • 在线教育:WebSocket 支持多媒体聊天、协作和实时互动,提升在线学习的体验。

  • WebSocket 相对 HTTP 的优势

  • 小型协议头:WebSocket 的协议头较小,有效数据占比高,提高传输效率。

  • 服务器推送:WebSocket 允许服务器主动向客户端推送数据,具有更强的实时性。

  • WebSocket 请求的辨别

    WebSocket 请求通过 HTTP 进行握手,握手成功后数据通过 TCP 通道传输。以下是 WebSocket 请求的示例:

    客户端请求头

    GET / HTTP/1.1Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ==Sec-WebSocket-Version: 13

    服务器响应头

    HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: fFBooB7FAkLlXgRSz0BT3v4hq5s=

    服务器在响应中使用 Sec-WebSocket-Accept 字段确认客户端的支持能力。如果握手成功,数据将通过 WebSocket 通道进行传输。

    WebSocket 与 HTTP 的关系

    WebSocket 和 HTTP 的主要区别在于连接类型。HTTP 是无状态的短连接协议,每次请求都建立新的连接,而 WebSocket 是一种持久连接协议,允许客户端和服务器保持长时间的连接,以便实时数据传输。

    通过对 WebSocket 和 HTTP 的理解,我们可以更好地选择适合业务需求的协议。短连接适合 HTTP,而 WebSocket 则适合需要实时数据传输和服务器推送的场景。在微信小程序开发中,根据具体业务需求选择合适的协议可以显著提升应用的性能和用户体验。

    转载地址:http://vhad.baihongyu.com/

    你可能感兴趣的文章
    MySQL5.7.19-win64安装启动
    查看>>
    mysql5.7.19安装图解_mysql5.7.19 winx64解压缩版安装配置教程
    查看>>
    MySQL5.7.37windows解压版的安装使用
    查看>>
    mysql5.7免费下载地址
    查看>>
    mysql5.7命令总结
    查看>>
    mysql5.7安装
    查看>>
    mysql5.7性能调优my.ini
    查看>>
    MySQL5.7新增Performance Schema表
    查看>>
    Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
    查看>>
    Webpack 之 basic chunk graph
    查看>>
    Mysql5.7版本单机版my.cnf配置文件
    查看>>
    mysql5.7的安装和Navicat的安装
    查看>>
    mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
    查看>>
    Mysql8 数据库安装及主从配置 | Spring Cloud 2
    查看>>
    mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
    查看>>
    MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
    查看>>
    MYSQL8.0以上忘记root密码
    查看>>
    Mysql8.0以上重置初始密码的方法
    查看>>
    mysql8.0新特性-自增变量的持久化
    查看>>
    Mysql8.0注意url变更写法
    查看>>