傳統 Client Pull 透過 HTML `` 讓瀏覽器定時重新整理,用戶需忍受等待;Server Push 則建立持久連線,伺服器主動持續推送資料,大幅降低延遲,邁向即時雙向通訊。
| 特性 | Client Pull | Server Push |
|---|---|---|
| 連線模式 | 短連線,輪詢 | 長連線,持久 |
| 延遲 | 受輪詢間隔限制 | 近乎即時 |
| HTTP 標頭 | text/html | multipart/x-mixed-replace |
| 瀏覽器行為 | 整頁重新整理 | 增量更新畫面 |
#!/usr/bin/perl
print "Content-Type: multipart/x-mixed-replace; boundary=BOUNDARY\n\n";
while (1) {
print "--BOUNDARY\n";
print "Content-Type: text/html\n\n";
print "時間: ", scalar(localtime), "\n";
sleep 1;
}
關鍵點:
Content-Type: multipart/x-mixed-replace; boundary=BOUNDARY。--BOUNDARY 分隔,含獨立 Content-Type。現代 Web 採用 WebSocket、Server-Sent Events (SSE)、Long Polling、HTTP/2 Server Push 等更標準、穿透防火牆/Proxy 能力更強的技術。Server Push 為歷史演進關鍵環節,理解其原理有助於掌握即時通訊本質。