国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

workman倒計(jì)時(shí)30秒進(jìn)行ws前后端交互,怎么做?

jy03204340

如果是前段進(jìn)行倒計(jì)時(shí)觸發(fā),所有在線用戶都會(huì)發(fā)送向后端發(fā)送消息,而后端倒計(jì)時(shí)觸發(fā)則直接推送,不需要用戶前段發(fā)送消息,這個(gè)具體怎么做?

4895 2 0
2個(gè)回答

walkor 打賞

不了解為何有這種需求

前端定時(shí)吧,簡(jiǎn)單,不容易出錯(cuò)

  • jy03204340 2014-12-27

    我的需求是這樣,有一個(gè)房間,房主和其他人多個(gè)人,房主創(chuàng)建這個(gè)房間的有效時(shí)間為30分鐘,當(dāng)30分鐘后,關(guān)閉整個(gè)房間,發(fā)送消息給在線的人,說(shuō)該房間已過期。
    如果用前段定時(shí)器,并且這些人都在線,究竟是誰(shuí)去向后端發(fā)送消息,如果這些人同時(shí)發(fā)送不是重復(fù)發(fā)送消息了么?求解答

walkor 打賞

我的需求是這樣,有一個(gè)房間,房主和其他人多個(gè)人,房主創(chuàng)建這個(gè)房間的有效時(shí)間為30分鐘,當(dāng)30分鐘后,關(guān)閉整個(gè)房間,發(fā)送消息給在線的人,說(shuō)該房間已過期。
如果用前段定時(shí)器,并且這些人都在線,究竟是誰(shuí)去向后端發(fā)送消息,如果這些人同時(shí)發(fā)送不是重復(fù)發(fā)送消息了么?求解答

下次提問可以像這樣把應(yīng)用場(chǎng)景說(shuō)下,不同的場(chǎng)景,不同的做法,不說(shuō)需求場(chǎng)景真不好回答。
這種情況應(yīng)該服務(wù)端計(jì)時(shí),在創(chuàng)建房間的時(shí)候設(shè)置一個(gè)定時(shí)任務(wù),偽代碼如下

\Man\Core\Lib\Task::add(30*60, 
    function () use ($room_id){
         // 獲取所有該$room_id房間的client_id, get_client_id_arr是你自己的函數(shù)
        $all_client_id_array = get_client_id_arr($room_id);
         // 提示房間關(guān)閉的包
        $close_room_message = json_encode(xxxxxx);
        // 發(fā)送包
        \Lib\Gateway::sendToAll($all_client_id_array, $close_room_message);
        // 關(guān)閉所有客戶端連接
        foreach($all_client_id_array as $client_id)
        {
            \Lib\Gateway::kickClient($client_id);
        }
    },
    false
);
  • jy03204340 2015-01-04

    首先,謝謝walker你的回答
    另外,補(bǔ)充說(shuō)明,場(chǎng)景:5人房間組隊(duì)打游戲,有人在房間內(nèi),有人在大廳,需求:有一個(gè)預(yù)定的開始時(shí)間,達(dá)到這個(gè)時(shí)間時(shí)向在線用戶提示“該隊(duì)伍已過期”,不論在房間內(nèi)的用戶或者是在大廳的用戶,都可以收到這條提示。
    最后
    1.你說(shuō)的服務(wù)端計(jì)時(shí)是如何計(jì)時(shí)的?
    2.創(chuàng)建房間的時(shí)候設(shè)置一個(gè)定時(shí)任務(wù)我不太明白,如果我要做任務(wù)定時(shí)的話,我想我會(huì)在創(chuàng)建隊(duì)伍的時(shí)候可能會(huì)做一個(gè)倒計(jì)時(shí)定時(shí)器,假設(shè)是10點(diǎn)創(chuàng)建房間,10點(diǎn)10分過期,在創(chuàng)建隊(duì)伍時(shí)之后的10分鐘的最后一秒,執(zhí)行一項(xiàng)任務(wù),然后再向客戶端發(fā)送消息提示,我不知道我的理解與你的表述是否一致,我自己也在想方法。
    再次感謝walker你多次的幫助,我覺得我也需要自己多想一想,不能遇到問題就不思考,謝謝。

  • walkor 2015-01-05

    看下這個(gè)函數(shù)\Man\Core\Lib\Task::add以及我給你貼的代碼
    這個(gè)函數(shù)就是添加一個(gè)定時(shí)任務(wù),執(zhí)行時(shí)間間隔是第一個(gè)參數(shù),執(zhí)行的函數(shù)是第二個(gè)參數(shù),第三個(gè)參數(shù)代表是否執(zhí)行一次還是每隔第一個(gè)參數(shù)設(shè)定的時(shí)間不停的定時(shí)執(zhí)行

    假設(shè)是10點(diǎn)創(chuàng)建房間,10點(diǎn)10分過期,在創(chuàng)建隊(duì)伍時(shí)之后的10分鐘的最后一秒,執(zhí)行一項(xiàng)任務(wù)

    // 10分鐘(1060秒)后執(zhí)行
    \Man\Core\Lib\Task::add(10
    60, function()
    {
    // message 是你的“該隊(duì)伍已過期”的消息, $client_id_array是發(fā)給哪些客戶端
    Gateway::sendToAll($message, $client_id_array);
    },
    false // 只執(zhí)行一次填寫false
    );

年代過于久遠(yuǎn),無(wú)法發(fā)表回答
??