国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP即時通訊設計實現

leejan97 / 1876人閱讀

摘要:即時通訊中,最重要的是響應速度,我們需要展示消息列表那么這時會有未讀消息,未讀數量,最后一條消息內容,時間等等。目前設計是單表單庫。這里只是對即時通訊設計上做了一些簡要的闡述,如有疑問和建議,請在評論區回復。

詳解即時通訊設計實現(PHP+GatewayWorker+Redis) 需要實現的功能

一對一聊天(私聊)

一對多聊天(群聊)

類似QQ,微信等聊天列表 實時消息 顯示

工具選擇

GatewayWorker 有如下特性(更多請參考官網手冊)

基于Workerman開發

基于Gateway、Worker進程模型

支持分布式部署

支持高并發

支持全局廣播或者向任意客戶端推送數據

支持各種應用層協議

多協議支持

支持對象或者資源永久保持

高性能

方便與其它項目集成

支持長連接

我們主要使用它的WebSocket通訊協議,并且此框架非常方便的與 ThinkPHP,laravel 等框架結合使用,GatewayWorker可獨立部署,php負責相關的業務邏輯

Redis 鍵值操作,集合列表等。

即時通訊中,最重要的是響應速度,我們需要展示 “消息列表” 那么這時會有 未讀消息,未讀數量,最后一條消息內容,時間等等。
websocket與GatewayWorker 原理使用 將不再敘述,不懂的童鞋 請上度娘 效果展示

群聊|私聊效果圖

消息列表效果圖

數據庫設計(群聊,私聊 分開) 私聊設計(簡要設計)
參數名 說明
id 主鍵
sender_id 發送者id
receive_id 接收者id
chat_identify 標識 :a與b聊天,b與a聊天。記錄 a-b
message_details 消息內容
last_time_at 聊天時間間隔 超過一定時間時記錄

chat_identify 字段用處,這個字段是為了更方便的查找 a,b 之間的聊天記錄。

last_time_at QQ,微信聊天記錄之間,隔一段時間會有 時間 記錄,并不顯示每一條聊天記錄的時間

群聊(簡要設計)

與私聊很像,只不過接收者id,變成 group_id 群組id。

消息列表設計,希望看到的效果是 “私聊,群聊”等都在一個列表展示,并且數據實時發生變化。這里借助Redis
每個用戶的列表都是一個集合 key = message_list:user_id
Redis集合存儲 消息類型 1私信,2群聊

message_list:user_id{
    json_encode(["消息類型","接收者id|群組id"]),
    json_encode(["消息類型","接收者id|群組id"]),
    json_encode(["消息類型","接收者id|群組id"]),
}

查找每個人的消息列表,直接取出該列表即可,但每個成員 都要對應 ‘未讀消息數量’,‘最后一條消息內容’,‘最后一條小時時間’。由于是可變的,所以需要多帶帶存儲

Redis 鍵值 key = message_content:user_id_消息類型_id

key =>json_encode(["消息數量","最后一條消息內容","時間"])

上面 集合列表里的每一個成員都 對應這里的每個鍵值。

消息更新都要操作Redis,相應的更新內容。

速度上 毋庸置疑,redis 相當的迅速。

需要后續優化的地方

私聊|群聊 記錄表。目前設計是單表單庫。顯然,隨著用戶量增加,必然爆棚。影響查詢的響應速度。

(解決方案無非:分庫分表,轉移備份歷史記錄)

GatewayWorker 通訊框架,是單服務器部署,不能支持太高的并發。

這里只是對 即時通訊 設計上做了一些簡要的闡述,如有疑問和建議,請在評論區回復。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28161.html

相關文章

  • PHP即時通訊設計實現

    摘要:即時通訊中,最重要的是響應速度,我們需要展示消息列表那么這時會有未讀消息,未讀數量,最后一條消息內容,時間等等。目前設計是單表單庫。這里只是對即時通訊設計上做了一些簡要的闡述,如有疑問和建議,請在評論區回復。 詳解即時通訊設計實現(PHP+GatewayWorker+Redis) 需要實現的功能 一對一聊天(私聊) 一對多聊天(群聊) 類似QQ,微信等聊天列表 實時消息 顯示 工具...

    asoren 評論0 收藏0
  • PHP即時通訊設計實現

    摘要:即時通訊中,最重要的是響應速度,我們需要展示消息列表那么這時會有未讀消息,未讀數量,最后一條消息內容,時間等等。目前設計是單表單庫。這里只是對即時通訊設計上做了一些簡要的闡述,如有疑問和建議,請在評論區回復。 詳解即時通訊設計實現(PHP+GatewayWorker+Redis) 需要實現的功能 一對一聊天(私聊) 一對多聊天(群聊) 類似QQ,微信等聊天列表 實時消息 顯示 工具...

    luckyyulin 評論0 收藏0
  • php+ajax實現在線刷新,即時通訊,無需mysql數據庫!

    摘要:顯示實時刷新的內容頁面。存儲文本數據。更新插入數據。首先呢,要有發送請求并顯示遞歸調用先執行一次然后通過和關聯起來。是一個空文件,你只需要用記事本,新建一個,用來存放表單提交過去的數據,也就是說,其實就是一個數據庫。 也不多,就4個文件。ajax.html - 顯示實時刷新的內容頁面。chat.php - 處理數據。data.dat - 存儲文本數據。update.php - 更新/插...

    shleyZ 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<