SWOOLE開(kāi)發(fā)實(shí)時(shí)聊天系統(tǒng)(九)收發(fā)消息的開(kāi)發(fā)

在用戶(hù)訂閱之后,我們就可以給用戶(hù)發(fā)消息了,只要有用戶(hù)向服務(wù)器發(fā)送了消息,就推送給其他所有用戶(hù)。
首先,我們需要在messageController中判斷用戶(hù)發(fā)送消息的類(lèi)型,即 type=message.
然后我們需要拼湊消息的數(shù)組,使用上一節(jié)中的數(shù)組即可。
最后,我們通過(guò)之前定義的給所有用戶(hù)發(fā)消息的方法,來(lái)將消息發(fā)送到所有用戶(hù),就可以了。
具體代碼如下:

case 'message':
    $msgService=new MessageService();
    $data=$msgService->getMessageContent($data,1);
    $fds = UserService::getFdByGroup($data['first_topic'], $data['second_topic']);
    $pushToAll=new PushToAllMessage($this->server,$data,$fds);
    $msgService->addPushObServer($pushToAll);
    $msgService->notify();
    break;

我們依然需要一個(gè)入庫(kù)和過(guò)濾的操作,這個(gè)操作可以在getMessageContent這個(gè)方法中給出。

<?php
namespace app\services;
use pool\pool;
use services\UploadService;
use Swoole\Mysql\Exception;
/**
 * 消息類(lèi),所有的消息都在這里處理
 * Class MessageService
 * @package app\services
 */
class MessageService extends CommonService
{
    public function getMessageContent($params, $isComeIn = 0)
    {
        if($isComeIn==0){
            $msg_content="xxx進(jìn)入了房間";
        }else{
            //TODO 消息敏感詞過(guò)濾
            //TODO 消息入庫(kù)
            $msg_content=$params['msg_content'];
        }
        return  [
            'first_topic' => $params['first_topic'],
            'second_topic' => $params['second_topic'],
            'msg_type' => 0,
            'msg_content' => $msg_content,
            'user_id' => $params['user_id'],
        ];
    }
}

然后我們可以測(cè)試一下收發(fā)消息的能力:
測(cè)試消息的結(jié)構(gòu)體為:

{
"type":"message",
"first_topic" :1,
"second_topic" :1,
"msg_type" :0,
"msg_content" : "你好",
"user_id" :1
}

我們?cè)?0086和10087兩個(gè)用戶(hù)都訂閱以后,用10086的用戶(hù)發(fā)送消息,可以看到

10086.png
10087.png

當(dāng)前組中的所有用戶(hù)都已經(jīng)收到了消息。
因此,這個(gè)聊天室就算完成了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容