第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章 玩转SS E 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