workmanのwebsocketはメッセージをタイムリーにフロントエンドに返します


  • workmanドキュメントのインストール:http://doc.workerman.net/install/install.html(公式ドキュメント)
  • (laravelフレームワーク)プロジェクトAppConsoleCommandsTestの下に次のようなタイミングファイルを新規作成します:WorkermanCommand
  • コードは次のとおりです:
  • /**websocket              
     * Class WorkermanCommand
     * @package App\Console\Commands\Test
     */
    class WorkermanCommand extends Command
    {
        protected $signature = 'workman {action} {--d}';
        protected $description = 'Start a Workerman server.';
    
        public function handle()
        {
            global $argv;
            $action = $this->argument('action');
    
            $argv[0] = 'wk';
            $argv[1] = $action;
            $argv[2] = $this->option('d') ? '-d' : '';
    
            $this->start();
        }
    
        private function start()
        {
    //          :      websocket  
            $ws_worker = new Worker("websocket://0.0.0.0:1234");
            //   1         
            $ws_worker->count = 1;
            //               hello $data    
            $ws_worker->onMessage = function ($connection, $data) {
                //       hello $data
                $connection->send('hello ' . $data);
            };
    //        worker
            Worker::runAll();
        }
    }
  • テストサーバshellでphp artisan workman startを実行図に示すように、
  • が正常にオープンしたことを示します.
  • workman 中的websocket及时接受消息返回给前端_第1张图片
  • テストでchromeブラウザを開き、F 12を押してデバッグコンソールを開き、Consoleの欄に入力(またはhtmlページに次のコードを入れるjsで実行)//サービス側ipが40.88であると仮定する.10.1 ws = new WebSocket("ws://40.88.10.1:1234"); ws.onopen=function(){alert("接続成功");ws.send('tom');alert("サービス側に文字列を送信:tom");};ws.onmessage=function(e){alert(「サービス側からメッセージを受信:」+e.data);};結果は以下の通りである:workman 中的websocket及时接受消息返回给前端_第2张图片
  • timerタイマの参照を追加するhttp://doc.workerman.net/timer/add.html公式文書