首頁  >  文章  >  後端開發  >  javascript - 想做一個類似QQ的網頁版聊天功能,如何實現? ?

javascript - 想做一個類似QQ的網頁版聊天功能,如何實現? ?

WBOY
WBOY原創
2016-09-19 09:16:241860瀏覽

製作網頁版聊天工具的時候,大家通常是用什麼方式來進行即時訊息傳遞的? ?

我所知道的 :

  1. ajax輪詢(都說浪費資源,不好...)

  2. EventSource(支援不好,IE壓根不支援..)

  3. WebSoket(不是很了解...)

而且,百度搜尋後了解到在瀏覽器不支援WebSocket 的情況下,居然還有第三方函式庫能夠實現WebSocket ,是否所謂的WebSocket 也是如同EventSource 一樣,核心原理都是用ajax 的輪詢方式實現即時通信? ?

目前普遍在用的網頁即時通訊技術是什麼? ?小白求教,求大神空降...

回覆內容:

製作網頁版聊天工具的時候,大家通常是用什麼方式來進行即時訊息傳遞的? ?

我所知道的 :

  1. ajax輪詢(都說浪費資源,不好...)

  2. EventSource(支援不好,IE壓根不支援..)

  3. 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應用程式:

<code>apt-get install php-pear php5-dev
yum install php-pear php-devel
pecl remote-info swoole
pecl install swoole</code>

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次.

<code>window.onblur  = function() {document.title = '失去焦点';};
window.onfocus = function() {document.title = '获得焦点';};</code>

我以前用nodejs socket.io寫過一個,直接搜,就有很多別人寫的例子:http://www.open-open.com/lib/...

樓上正解。

案例網址:http://www.workerman.net/

websocket肯定不是透過ajax實現的.
用websocket肯定是最完美的, 可以透過workerman, react, swoole這類框架配合實現.
用長輪詢也可以, 不過比較耗資源. 但是實現成本比websocket .
還有就是即時輪詢, 實現成本最低. 不過效率肯定是最低的, 像SF的訊息提醒就是用的定時輪詢

javascript - 想做一個類似QQ的網頁版聊天功能,如何實現? ?

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn