前言 IX
第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
· · · · · · (
收起)