具体描述
比较SSE、WebSocket或者数据拉取方案的区别,以便你在解决手头的问题时自如选择
开发一个包含后端和前端解决方案的实际SSE应用
解决错误处理、系统恢复和其他问题,使应用达到产品水准
分析不支持SSE的浏览器的两种向后兼容解决方案
处理安全问题,包括认证授权和不允许的域
开发在测试驱动SSE设计中有用的实际、可重用的数据
学习示例应用中不包含的SSE协议元素
作者简介
作者简介:
Darren Cook
Darren Cook 精通多种计算机语言,包括JavaScript、PHP以及C++,拥有20多年软件开发及项目管理经验,涉及金融交易系统、数据可视化工具、世界级公司的网站乃至电子游戏。他开发过类似Twitter的HTTP流数据网络服务系统,还为许多应用写过底层的套接字服务端/客户端协议,构建过使用SSE和WebSocket的应用。
译者简介:
刘帅
刘帅 百度前端高级研发工程师,毕业于哈尔滨工程大学,获得计算机科学与技术专业学士学位。毕业以来一直从事前端开发工作,先后就职于新浪、阿里巴巴、腾讯、百度,参与开发了基于HTML5技术的腾讯浏览器、QQ for Windows 8、百度打车WebApp版,现参与开发百度地图。
目录信息
第1章 SSE 及其他 1
1.1 HTML5 2
1.2 数据推送 2
1.3 数据推送的其他名称 5
1.4 可能会用到SSE 的应用 5
1.5 和WebSocket 的对比 6
1.6 什么时候数据推送是错误的选择 8
1.7 决策、决策还是决策 10
1.8 带我看代码吧 11
第2章 玩转SSE 13
2.1 最简单的示例:前端 13
2.2 使用jQuery 吗 16
2.3 最简示例:后端 17
2.4 基于Node.js 的后端 19
2.4.1 基于Node.js 的最简Web 服务器 19
2.4.2 用Node.js 做推送 20
2.4.3 在浏览器中运行 22
2.5 华丽退场 25
第3章 迷人的真实数据推送应用 27
3.1 问题领域 27
3.2 后端 28
3.3 前端 32
3.4 可复现的真实随机数据 33
3.5 精磨时间戳 36
3.6 控制好随机性 39
3.7 为时间的真正流逝留出余地 41
3.8 本章内容盘点 42
第4章 别安于现状 43
4.1 数据的更多构成 43
4.2 重构PHP 44
4.3 重构JavaScript 45
4.4 历史数据存储 47
4.5 永久存储 50
4.6 现在我们是历史学家 53
第5章 走出象牙塔,打造产品级品质 55
5.1 错误处理 55
5.2 错误的JSON 56
5.3 长连接 56
5.3.1 服务器端 57
5.3.2 客户端 58
5.3.3 SSE 重试 60
5.4 添加定期的关闭/ 重连 63
5.5 发送Last-Event-ID 66
5.6 多路数据ID 69
5.7 使用Last-Event-ID 70
5.8 在重连时发送ID 72
5.9 不要全局化,考虑本地化 74
5.10 阻止缓存 75
5.11 阻止死亡 75
5.12 精简的简单办法 76
5.13 本章回顾 76
第6章 向后兼容:其他数据推送策略 77
6.1 浏览器战争 77
6.2 什么是轮询 78
6.3 怎样做长轮询 79
6.4 给我看些代码 80
6.5 优化长轮询 83
6.6 如果JavaScript 被禁用怎么办 84
6.7 将长轮询移植到我们的外汇交易应用 85
6.7.1 连接 85
6.7.2 长轮询和长连接 87
6.7.3 长轮询和连接错误 88
6.7.4 服务器端 89
6.7.5 处理数据 91
6.7.6 接起来 92
6.7.7 IE8 及更早版本 92
6.7.8 IE7 及其更早版本 93
6.8 蜿蜒曲折的轮询 94
第7章 向后兼容:另辟蹊径 95
7.1 共性 96
7.2 XHR 98
7.3 iframe 100
7.4 将XHR/iframe 移植到外汇交易应用 102
7.4.1 后端的XHR 102
7.4.2 前端的XHR 103
7.4.3 前端的iframe 103
7.4.4 接通XHR 104
7.4.5 接通iframe 105
7.5 感谢内存 107
7.6 把襁褓中的外汇交易应用放到床上 108
第8章 关于SSE 的其他标准 111
8.1 请求头 111
8.2 事件 114
8.3 多行数据 118
8.4 消息中的空白 120
8.5 又见请求头 120
8.6 这就是全部内容吗 121
第9章 认证授权:谁在敲门 123
9.1 Cookie 123
9.2 认证授权(使用Apache 服务器) 125
9.3 带有SSE 的HTTP POST 127
9.4 多重鉴权选择 129
9.5 SSL 和CORS(连接到其他服务器) 130
9.6 Allow-Origin 132
9.7 完善访问控制 134
9.8 HEAD 和OPTIONS 135
9.9 Chrome 和Safari 以及CORS 137
9.10 构造函数与证书 138
9.11 withCredentials 138
9.12 CORS 和向后兼容方案 140
9.12.1 CORS 和IE9 及其更早版本 141
9.12.2 IE8/IE9:总是使用长轮询 142
9.12.3 动态处理IE9 及其更早版本 143
9.13 汇总 146
9.14 未来会有更多一样 151
附录A SSE 标准 153
A.1 W3C 候选推荐标准2012.12.11 153
A.1.1 摘要 154
A.1.2 本文档的状态 154
A.1.3 目录 155
A.1.4 引言 156
A.1.5 一致性要求 157
A.1.6 术语 158
A.1.7 EventSource 接口 158
A.1.8 处理模型 160
A.1.9 解析事件流 162
A.1.10 解释事件流 162
A.1.11 注意事项 165
A.1.12 无连接推送和其他特性 166
A.1.13 垃圾回收 166
A.1.14 IANA 须知 167
A.1.15 参考文献 169
A.1.16 致谢 170
附录B 重构:JavaScript 全局变量、对象和闭包 171
B.1 示例 171
B.2 问题是…… 174
B.3 JavaScript 对象和构造函数 175
B.4 用对象的代码 176
B.5 JavaScript 闭包 177
附录C PHP 181
C.1 PHP 中的类 181
C.2 随机函数 182
C.3 超全局变量 182
C.4 数据处理 182
C.5 密码 183
C.6 休眠 184
· · · · · · (收起)
读后感
用户评价
坦白说,我对数据推送这个领域的研究不算深入,但市面上很多关于这个主题的书籍要么过于侧重底层协议的原理阐述,读起来枯燥乏味,要么就是例子老旧,跟不上现代前端框架的节奏。这本书的出现,让我看到了希望。我特别关注它在“应用开发”这块的侧重点。这意味着它应该会更注重工程实践,比如如何处理连接断开后的重连机制、如何优化数据传输的效率以节省带宽,以及如何在不同的浏览器和移动端环境下保证推送的一致性和稳定性。我希望能看到作者如何巧妙地结合其他Web技术,比如Service Workers来增强离线体验,或者如何利用一些流行的前端框架(比如React或Vue)来更高效地管理推送数据的渲染。如果书中能对性能瓶颈进行深入剖析,并给出实用的调优策略,那这本书的价值无疑会大大提升。我更看重的是那种“教你如何解决真实世界问题”的深度和广度。
这本书的封面设计得非常吸引人,那种简洁而富有现代感的布局,立刻抓住了我的眼球。我一直对那些能够实时更新信息的技术很感兴趣,特别是涉及到网页前端的解决方案。这本书的标题《HTML5数据推送应用开发》本身就透露出一种前沿和实用的气息,让人不由自主地想深入了解它到底能教给我们哪些绝活。我希望它不仅仅停留在理论层面,而是能提供大量可以直接应用到实际项目中的代码示例和最佳实践。毕竟,对于我们这些一线开发者来说,最宝贵的不是晦涩难懂的理论,而是那些能立竿见影提升开发效率和用户体验的“干货”。光是想象着能够开发出像实时聊天、股票行情更新那样的动态应用,就让人充满了学习的动力。我期待着这本书能详细拆解HTML5中那些强大的API,比如WebSocket,并且展示如何用优雅的JavaScript代码将它们串联起来,构建出一个高性能、高可靠性的推送系统。如果书中能配有详细的图解和步骤说明,那就更完美了,能大大降低学习曲线,让初学者也能快速上手。
这本书的定价让我感到有点犹豫,不过最终我还是决定入手,主要是冲着“HTML5”这个关键词。在当前这个万物互联的时代,客户端与服务器之间的即时通信能力几乎成了所有创新应用的基础设施。我希望这本书能给我提供一个全面且现代的视角来理解这一技术栈。我尤其好奇作者是如何组织内容的,是按照协议的复杂度来划分章节,还是按照应用场景来构建知识体系?后者对我来说可能更有吸引力。比如,第一部分讲基础知识,第二部分直接进入一个完整的即时通讯Demo的构建流程。如果这本书能用一种非常清晰、结构化的方式,将复杂的异步编程模型讲解透彻,并且能深入探讨推送消息的安全性问题——毕竟实时数据推送往往涉及敏感信息——那它就不仅仅是一本技术手册,更是一份值得珍藏的开发指南。我希望读完之后,我对HTTP长轮询、SSE和WebSocket之间的优劣能有深刻的体会,并能根据具体业务需求做出最合适的架构选择。
说实话,我选择这本书很大程度上是基于对作者过往作品的信赖,希望这次的《HTML5数据推送应用开发》也能保持一贯的高水准。我的主要关注点在于“工程化”和“性能优化”。现在的前端应用越来越重,如何确保数据推送不会成为拖垮整个应用性能的罪魁祸首是一个核心挑战。我期待这本书能提供一套系统的性能评估和优化方法论,不仅仅是告诉我们如何使用WebSocket,更重要的是如何用好它——比如,如何设计高效的消息体格式(JSON的序列化和反序列化开销、二进制数据的处理),如何利用消息队列或推送服务器集群来应对高并发负载。如果书中能深入探讨如何在Node.js、Go或者Java等主流后端环境下,高效地实现WebSocket服务器的搭建和管理,那就具有了极高的参考价值。这本书如果能成为一本能指导我完成一个从原型设计到生产部署全流程的实战手册,那它的价值就无可替代了。
拿到实体书的那一刻,我最先留意的是字体排版和代码块的格式。对于技术书籍来说,阅读体验至关重要。如果代码缩进混乱或者变量命名不规范,会极大地影响学习效率。这本书的排版看起来相当专业,清晰的章节标题和合理的留白,让人阅读起来心情舒畅。从目录来看,内容覆盖面似乎很广,涵盖了从浏览器API到服务器端配合的整个链路。我非常期待作者能分享一些在处理大规模并发推送时遇到的“坑”以及如何爬出来的经验。一个优秀的开发者往往不是只会写Hello World,而是能处理好异常和边缘情况。如果书中能提供一些关于如何利用云服务(如AWS、Azure或国内的云厂商)来部署和扩展数据推送服务的实战经验,那就太棒了。这种跨领域的知识融合,对于提升我们构建大型分布式系统的能力是很有帮助的。我希望能看到作者对未来数据推送技术趋势的展望,比如WebTransport等新兴技术的潜力分析。
内容还不错,不是典型的技术书的写法
好书,有用,数据推送方面值得参考。
正好派上用场。
好书,有用,数据推送方面值得参考。
好书,有用,数据推送方面值得参考。