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

資訊專欄INFORMATION COLUMN

WebSocket之GatewayWorker使用說明

WilsonLiu95 / 2932人閱讀

摘要:無法接收客戶端發(fā)來的數(shù)據(jù)。如果和在同一臺(tái)服務(wù)器上運(yùn)行,則不用做任何更改,直接按照示例使用即可。

首發(fā)于個(gè)人博客 https://www.axie.cc/article/51
參考文檔:

http://www.workerman.net/gate...

1.下載:

界面如下圖:

根據(jù)自己的運(yùn)行環(huán)境下載相應(yīng)的版本:兩者除了啟動(dòng)方式不一樣,其它文件都一樣

windows版本啟動(dòng)方式:運(yùn)行下載下來的GatewayWorker-for-winstart_for_win.bat批處理文件

Linux版本啟動(dòng)方式:運(yùn)行GatewayWorkerstart.php文件, // 全局啟動(dòng)腳本,此腳本會(huì)依次加載Applications/項(xiàng)目/start_*.php啟動(dòng)腳本

2.目錄結(jié)構(gòu):
├── Applications // 這里是所有開發(fā)者應(yīng)用項(xiàng)目
│   └── YourApp  // 其中一個(gè)項(xiàng)目目錄,目錄名可以自定義
│       ├── Events.php // 開發(fā)者只需要關(guān)注這個(gè)文件
│       ├── start_gateway.php // gateway進(jìn)程啟動(dòng)腳本,包括端口號(hào)等設(shè)置
│       ├── start_businessworker.php // businessWorker進(jìn)程啟動(dòng)腳本
│       └── start_register.php // 注冊服務(wù)啟動(dòng)腳本
│
├── start.php // 全局啟動(dòng)腳本,此腳本會(huì)依次加載Applications/項(xiàng)目/start_*.php啟動(dòng)腳本
│
└── vendor    // GatewayWorker框架和Workerman框架源碼目錄,此目錄開發(fā)者不用關(guān)心

提示:
1.客戶端的事件及數(shù)據(jù)全部由Gateway轉(zhuǎn)發(fā)給BusinessWorker處理,BusinessWorker默認(rèn)調(diào)用Events.php中的onConnect onMessage onClose處理業(yè)務(wù)邏輯。
本地連接,類似邏輯代碼:




    
    
    溝通中




2.通過GatewayClient發(fā)送的數(shù)據(jù)不會(huì)經(jīng)過Event.php,而是直接經(jīng)由Gateway進(jìn)程轉(zhuǎn)發(fā)給客戶端。GatewayClient無法接收客戶端發(fā)來的數(shù)據(jù)。
示例代碼:

Gateway::$registerAddress = "127.0.0.1:1238";
$message = [
            "type" => 4002,
            "clientId" => $clientId,
            "publish_time" => date("Y-m-d h:i:s", time())
        ];
Gateway::bindUid($clientId,$uid);
//在這里發(fā)送的信息是不走Event.php文件的,直接廣播出去了
Gateway::sendToClient($clientId,json_encode($message));

如果GatewayClient和GatewayWorker不是在同一臺(tái)服務(wù)器上,則需要先將start_gateway.php中的lanIp改成當(dāng)前服務(wù)器的內(nèi)網(wǎng)ip(如果不在一個(gè)內(nèi)網(wǎng)可改成公網(wǎng)ip)。
如果GatewayClient和GatewayWorker在同一臺(tái)服務(wù)器上運(yùn)行,則不用做任何更改,直接按照示例使用GatewayClient即可。

3.運(yùn)行測試:

1.運(yùn)行g(shù)ateway.php
2.start_gateway.php文件,這個(gè)文件是默認(rèn)的文件,默認(rèn)協(xié)議是text協(xié)議:

// gateway 進(jìn)程,這里使用Text協(xié)議,可以用telnet測試
$gateway = new Gateway("Text://0.0.0.0:8282");
//想用js連接情況下:
$gateway = new Gateway("ws://0.0.0.0:8282");

3.本地測試text協(xié)議是否正常命令,cmd運(yùn)行:

telnet 127.0.0.1 8282

界面顯示:

4.重新打開一個(gè)窗口:window測試結(jié)果:

5.Linux 測試結(jié)構(gòu):

6.測試成功!

開始實(shí)戰(zhàn):

我們只要對這四個(gè)文件進(jìn)行了解:

├── Applications // 這里是所有開發(fā)者應(yīng)用項(xiàng)目
│   └── YourApp  // 其中一個(gè)項(xiàng)目目錄,目錄名可以自定義
│       ├── Events.php // 開發(fā)者只需要關(guān)注這個(gè)文件
│       ├── start_gateway.php // gateway進(jìn)程啟動(dòng)腳本,包括端口號(hào)等設(shè)置
│       ├── start_businessworker.php // businessWorker進(jìn)程啟動(dòng)腳本
│       └── start_register.php // 注冊服務(wù)啟動(dòng)腳本

1.修改start_gateway.php文件的這句配置,換成自己喜歡的協(xié)議與接口

// gateway 進(jìn)程,這里使用Text協(xié)議,可以用telnet測試
$gateway = new Gateway("Websocket://0.0.0.0:7272");

2.修改Events.php 響應(yīng)數(shù)據(jù)

//部分代碼
class Events
{
    static  $num = 0;

    /**
     * 當(dāng)客戶端連接時(shí)觸發(fā)的事件。
     * @param $client_id
     */
    public static function onConnect($client_id)
    {
        global $num;
        Gateway::sendToClient($client_id, json_encode(array(
            "type"      => "init",
            "msg" => $client_id
        )));

    }

   /**
    * 有消息時(shí)
    * @param int $client_id
    * @param mixed $message
    */
   public static function onMessage($client_id, $message)
   {
       // 客戶端傳遞的是json數(shù)據(jù)
       $message_data = json_decode($message, true);
       if(!$message_data)
        {
           return ;
        }
       switch($message_data["type"]){
           case "bind":
               $fromid = $message_data["fromid"];
               Gateway::bindUid($client_id, $fromid);
               Gateway::sendToUid($message_data["fromid"],json_encode(["type"=>"bind","msg"=>"綁定成功"])); //返回給發(fā)送者
               return;
        }
        //其它c(diǎn)ase 情況
    }
    /**
    * 當(dāng)用戶斷開連接時(shí)觸發(fā)
    * @param int $client_id 連接id
    */
   public static function onClose($client_id)
   {
       // 向所有人發(fā)送 
       GateWay::sendToAll("$client_id logout
");
   }
}

3. 在html中調(diào)用,觀察console的數(shù)據(jù)




    
    
    溝通中




注意:注冊端口
文件:ApplicationsYourAppstart_register.php ApplicationsYourAppstart_gateway.php ApplicationsYourAppstart_businessworker.php
中的注冊地址要一樣

//start_register.php
// 服務(wù)注冊地址
$gateway->registerAddress = "127.0.0.1:1238";

//start_businessworker.php
// 服務(wù)注冊地址
$worker->registerAddress = "127.0.0.1:1238";

//start_register.php
// register 必須是text協(xié)議
$register = new Register("text://0.0.0.0:1238");

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

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

相關(guān)文章

  • 通過GatewayWorker/Workerman搭建Websocket微服務(wù)

    摘要:背景最近在一些項(xiàng)目需要用到實(shí)時(shí)推送給分組的用戶,前端需要傳輸給后端的信息比較少,通過多方考慮選擇了通過框架基于搭建微服務(wù)。擁有定時(shí)器異步客戶端異步異步異步異步消息隊(duì)列等眾多高性能組件。配合的定時(shí)器,也可以定時(shí)推送數(shù)據(jù)。 背景 最近在一些項(xiàng)目需要用到Websocket實(shí)時(shí)推送給分組的用戶,前端需要傳輸給后端的信息比較少,通過多方考慮選擇了通過GatewayWorker框架(基于Worke...

    QLQ 評論0 收藏0
  • 使用Websocket框架GatewayWorker開發(fā)電商平臺(tái)買家與賣家實(shí)時(shí)通訊

    摘要:我們的平臺(tái)上有虛擬商品和實(shí)體商品兩大分類,當(dāng)時(shí)也考慮到了消息的讀取狀態(tài)。商家發(fā)送時(shí)間是否已讀。看前端代碼當(dāng)前的所有代碼并不是最終的,目前只是階段性開發(fā),后期在項(xiàng)目中逐步完善。 前段時(shí)間公司提了一個(gè)新的需求,在商品的詳情頁要實(shí)現(xiàn)站內(nèi)買家和商品賣家實(shí)時(shí)通訊的功能以方便溝通促成交易,要開發(fā)此功能當(dāng)時(shí)首先考慮到的就是swoole和workerman了,從網(wǎng)上大概了解了一下關(guān)于這兩款工具的闡述,...

    ZweiZhao 評論0 收藏0
  • 使用Websocket框架GatewayWorker開發(fā)電商平臺(tái)買家與賣家實(shí)時(shí)通訊

    摘要:我們的平臺(tái)上有虛擬商品和實(shí)體商品兩大分類,當(dāng)時(shí)也考慮到了消息的讀取狀態(tài)。商家發(fā)送時(shí)間是否已讀。看前端代碼當(dāng)前的所有代碼并不是最終的,目前只是階段性開發(fā),后期在項(xiàng)目中逐步完善。 前段時(shí)間公司提了一個(gè)新的需求,在商品的詳情頁要實(shí)現(xiàn)站內(nèi)買家和商品賣家實(shí)時(shí)通訊的功能以方便溝通促成交易,要開發(fā)此功能當(dāng)時(shí)首先考慮到的就是swoole和workerman了,從網(wǎng)上大概了解了一下關(guān)于這兩款工具的闡述,...

    CloudDeveloper 評論0 收藏0
  • 使用Websocket框架GatewayWorker開發(fā)電商平臺(tái)買家與賣家實(shí)時(shí)通訊

    摘要:我們的平臺(tái)上有虛擬商品和實(shí)體商品兩大分類,當(dāng)時(shí)也考慮到了消息的讀取狀態(tài)。商家發(fā)送時(shí)間是否已讀。看前端代碼當(dāng)前的所有代碼并不是最終的,目前只是階段性開發(fā),后期在項(xiàng)目中逐步完善。 前段時(shí)間公司提了一個(gè)新的需求,在商品的詳情頁要實(shí)現(xiàn)站內(nèi)買家和商品賣家實(shí)時(shí)通訊的功能以方便溝通促成交易,要開發(fā)此功能當(dāng)時(shí)首先考慮到的就是swoole和workerman了,從網(wǎng)上大概了解了一下關(guān)于這兩款工具的闡述,...

    姘存按 評論0 收藏0
  • 使用Websocket框架GatewayWorker開發(fā)電商平臺(tái)買家與賣家實(shí)時(shí)通訊

    摘要:我們的平臺(tái)上有虛擬商品和實(shí)體商品兩大分類,當(dāng)時(shí)也考慮到了消息的讀取狀態(tài)。商家發(fā)送時(shí)間是否已讀。看前端代碼當(dāng)前的所有代碼并不是最終的,目前只是階段性開發(fā),后期在項(xiàng)目中逐步完善。 前段時(shí)間公司提了一個(gè)新的需求,在商品的詳情頁要實(shí)現(xiàn)站內(nèi)買家和商品賣家實(shí)時(shí)通訊的功能以方便溝通促成交易,要開發(fā)此功能當(dāng)時(shí)首先考慮到的就是swoole和workerman了,從網(wǎng)上大概了解了一下關(guān)于這兩款工具的闡述,...

    Baoyuan 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<