反向 ajax 又叫 comet / server push / 服務器推技術php
應用範圍:網頁聊天服務器,例如新浪微博在線聊天、google mail 網頁聊天html
原理:通常而言,HTTP 協議的特色是,鏈接以後斷開鏈接(服務器響應 Content-Length,收到了指定 Length 長度的內容時,也就斷開了)。在 HTTP 1.1 協議中,容許不寫 Content-Length,好比要發送的內容長度確實不知道,此時須要一個特殊的 Content-Type:chunked,叫作分塊傳輸,只有當服務器最後發送 0\r\n,在代表服務器和客戶端的這次鏈接完全結束。mysql
【例】ajax
1sql 2數據庫 3瀏覽器 4服務器 5fetch 6google 7 8 9 10 11 12 13 14 15 16 |
|
執行頁面:
2,3,4,5..源源不斷地輸出。
當輸出的值是數據庫中的數據(能夠是聊天記錄),就能夠實現即時通訊。
新建數據庫 msg,新建表 message:
1 2 3 4 5 6 |
|
修改 comet.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
同時在命令行中運行 mysql,插入數據:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
此時頁面的效果是:每插入一條數據,該數據就在頁面中當即輸出
該技術就叫 comet / server push / 反向 ajax 技術。
能夠使用 Node.js(長鏈接)+Redis(隊列服務器)+ PHP + comet(反向 ajax) 實現更好的即時聊天。