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

資訊專欄INFORMATION COLUMN

PHP即時通訊設計實現(xiàn)

asoren / 2268人閱讀

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

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

一對一聊天(私聊)

一對多聊天(群聊)

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

工具選擇

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

基于Workerman開發(fā)

基于Gateway、Worker進程模型

支持分布式部署

支持高并發(fā)

支持全局廣播或者向任意客戶端推送數(shù)據(jù)

支持各種應用層協(xié)議

多協(xié)議支持

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

高性能

方便與其它項目集成

支持長連接

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

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

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

群聊|私聊效果圖

消息列表效果圖

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

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

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

群聊(簡要設計)

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

消息列表設計,希望看到的效果是 “私聊,群聊”等都在一個列表展示,并且數(shù)據(jù)實時發(fā)生變化。這里借助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"]),
}

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

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

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

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

消息更新都要操作Redis,相應的更新內(nèi)容。

速度上 毋庸置疑,redis 相當?shù)难杆佟?/p> 需要后續(xù)優(yōu)化的地方

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

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

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

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

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/51740.html

相關文章

  • PHP即時通訊設計實現(xiàn)

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

    luckyyulin 評論0 收藏0
  • PHP即時通訊設計實現(xiàn)

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

    leejan97 評論0 收藏0
  • php+ajax實現(xiàn)在線刷新,即時通訊,無需mysql數(shù)據(jù)庫!

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

    shleyZ 評論0 收藏0

發(fā)表評論

0條評論

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