制作網頁版聊天工具的時候,大家通常是用什麼方式來進行實時消息傳遞的??
我所知道的 :
ajax輪詢(都說浪費資源,不好...)
EventSource(支援不好,IE壓根不支援..)
WebSoket(不是很了解...)
而且,百度搜尋後了解到在浏覽器不支援 WebSocket 的情況下,居然還有第三方庫能夠實作 WebSocket ,是否所謂的 WebSocket 也是如同 EventSource 一樣,核心原理都是用 ajax 的輪詢方式實作即時通信??
目前普遍在用的網頁實時通信技術是什麼??小白求教,求大神空降...
回複内容:
制作網頁版聊天工具的時候,大家通常是用什麼方式來進行實時消息傳遞的??
我所知道的 :
ajax輪詢(都說浪費資源,不好...)
EventSource(支援不好,IE壓根不支援..)
WebSoket(不是很了解...)
而且,百度搜尋後了解到在浏覽器不支援 WebSocket 的情況下,居然還有第三方庫能夠實作 WebSocket ,是否所謂的 WebSocket 也是如同 EventSource 一樣,核心原理都是用 ajax 的輪詢方式實作即時通信??
目前普遍在用的網頁實時通信技術是什麼??小白求教,求大神空降...
Workerman是一款純PHP開發的開源高性能的PHP socket 伺服器架構。被廣泛的用于手機app、手遊服務端、網絡遊戲伺服器、聊天室伺服器、硬體通訊伺服器、智能家居、車聯網、物聯網等領域的開發。 支援TCP長連接配接,支援Websocket、HTTP等協定,支援自定義協定。基于workerman開發者可以更專注于業務邏輯開發,不必再為PHP Socket底層開發而煩惱。
git倉庫:https://github.com/walkor/Wor...
中文首頁:http://www.workerman.net/
中文文檔:http://doc3.workerman.net/
題主可以試試這個。
說兩個PHP的方案,其中之一的WorkerMan已經有人說了,另一個就是峰哥基于Swoole開發的PHPWebIM.
PECL擴充Swoole支援使用PHP來編寫高性能的socket應用:
apt-get install php-pear php5-dev
yum install php-pear php-devel
pecl remote-info swoole
pecl install swoole
PHPWebIM是Swoole官方基于PHP Swoole擴充和Swoole Framework開發的WebSocket網頁即時聊天工具.
PHPWebIM支援WebSocket+Comet兩種協定,可用于所有種類的浏覽器包括IE,請看Demo.
如果隻是實作比較實時的消息通知,也可以用AJAX輪詢:
1)單頁面(隻在一個頁面做輪詢)
2)setInterval間隔被動輪詢(keep-alive持久連接配接,比如30秒)
3)window.onfocus視窗獲得焦點主動觸發(event-driven)
輪詢間隔時間過短,使用者打開頁面過多,可能會導緻伺服器壓力過大.
對于實時性要求不高的業務,可以把間隔時間加大,比如2分鐘輪詢1次.
window.onblur = function() {document.title = '失去焦點';};
window.onfocus = function() {document.title = '獲得焦點';};
我以前用nodejs socket.io寫過一個,直接搜,就有好多别人寫的例子:http://www.open-open.com/lib/...
樓上正解。
案例位址:http://www.workerman.net/
websocket肯定不是通過ajax實作的.
用websocket肯定是最完美的, 可以通過workerman, react, swoole這類架構配合實作.
用長輪詢也可以, 不過比較耗資源. 但是實作成本比websocket低.
還有就是實時輪詢, 實作成本最低. 不過效率肯定是最低的, 像SF的消息提醒就是用的定時輪詢
本文原創釋出php中文網,轉載請注明出處,感謝您的尊重!