1. 程式人生 > >php從零搭建即時通訊(零.專案介紹)

php從零搭建即時通訊(零.專案介紹)

首先我的採用了,gatewayWork搭建長連線,使用tp5進行api及前端頁面的實現,資料庫就順便用個mysql了

實現效果如下


零.即時通訊的原理


即時通訊跟我們平時進行的前後端的互動有什麼不同呢
很簡單,三次握手與長連線的區別
三次握手太常見了就不細談了,我們主要講講長連線,        
長連線,就是伺服器與客戶端的連線一直不斷,        
使用三次握手時,就是廣大的客戶端知道伺服器的ip地址,然後想伺服器傳送請求就完事了,        
那麼問題來了,三次握手客戶端向伺服器推訊息是沒問題了,但是服務給客戶端發訊息怎麼辦呢,        
所有的客戶端都知道自己想訪問伺服器的地址,但是伺服器不知道那些是他向想推送訊息的客戶端的ip,        
這時候怎麼辦呢,hh長連線就該出場了,        
使用長連線後我們服務端就可以知道有那些客戶端跟它通訊了,就可以相互推送訊息了        
但是長連線及其消耗cpu資源,謹慎使用

一.gatewayWork介紹


這個就是我採用的php建立長連線的庫,使用這個庫以後,會在你的伺服器中自己建立一個webSocket用來進行長連線,官網傳送門https://www.workerman.net

二.專案分析

 

寫程式碼之前先分析需求我們這個最終的實現的專案,需要的需求如下

1.能實時進行點對點的聊天(可以同時與多人進行)

2.能傳送圖片

3.能傳送表情

4.能顯示自己的與聊天物件的頭像

5.每次進入聊天介面能獲取最近的10條記錄

6.在資訊列表頁面能顯示未讀訊息的條數

7.在資訊列表頁面能顯示未讀訊息的傳送者的頭像

8.在資訊列表頁面能顯示未讀訊息的傳送者傳送的最後一條訊息

9.在資訊列表頁面能顯示未讀訊息的傳送時間

這些功能將在下面的系列,一一講解