Laravel+Swoole 完成一個簡單的線上聊天室

Nine發表於2017-10-02

前言

前幾天一個朋友諮詢我關於線上聊天的事情,所以我就順手寫了一個簡單的線上聊天系統。
由於我是使用了最新版的Laravel,所以需要在PHP7.0以上的版本才可以搭建,具體的安裝和使用可以參考GitHub。感興趣的可以star或者fork

GitHub
線上體驗

chat.giffile

WebSocket

網頁版的線上聊天一般分為兩種方式,輪詢和全雙工。以傳統的HTTP形式來做,Server沒辦法主動的向Client傳送訊息,而像WebSocket這種全雙工形式則不太一樣,二者保持長連線,並且能讓Server主動的推送訊息到Client,這就大大節省了請求資源。
Swoole非常方便的以擴充套件的形式整合了這些高階功能。

思路

建立使用者,建立房間這種非常簡單的業務邏輯就不再贅述,這裡主要講一下聊天的實現。
由於SwooleWebSocket都是單獨的建立一個PHP程式,所以在資料共享上面我使用了Redis,使用SET來完成每個房間成員的統計,使用HASH來完成每個Connect ID對於房間號的繫結。關於Redis每種型別的使用以及實現原理可以參考我之前寫的這篇文章:聊一聊Redis的資料結構
Swoole我以command的形式來處理邏輯,主要參考了這篇文章

文章首發地址:我的部落格

參考

Laravel如何優雅的使用Swoole

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Nine

相關文章