前言
前幾天一個朋友諮詢我關於線上聊天的事情,所以我就順手寫了一個簡單的線上聊天系統。
由於我是使用了最新版的Laravel
,所以需要在PHP7.0
以上的版本才可以搭建,具體的安裝和使用可以參考GitHub
。感興趣的可以star
或者fork
。
chat.gif
WebSocket
網頁版的線上聊天一般分為兩種方式,輪詢和全雙工。以傳統的HTTP
形式來做,Server
沒辦法主動的向Client
傳送訊息,而像WebSocket
這種全雙工形式則不太一樣,二者保持長連線,並且能讓Server
主動的推送訊息到Client
,這就大大節省了請求資源。
而Swoole
非常方便的以擴充套件的形式整合了這些高階功能。
思路
建立使用者,建立房間這種非常簡單的業務邏輯就不再贅述,這裡主要講一下聊天的實現。
由於Swoole
的WebSocket
都是單獨的建立一個PHP
程式,所以在資料共享上面我使用了Redis
,使用SET
來完成每個房間成員的統計,使用HASH
來完成每個Connect ID
對於房間號的繫結。關於Redis
每種型別的使用以及實現原理可以參考我之前寫的這篇文章:聊一聊Redis的資料結構。Swoole
我以command
的形式來處理邏輯,主要參考了這篇文章。
文章首發地址:我的部落格
參考
本作品採用《CC 協議》,轉載必須註明作者和本文連結