workman 中的websocket及时接受消息返回给前端

  1. 安装workman文档:http://doc.workerman.net/install/install.html (官方文档)
  1. 在(laravel框架)项目App\Console\Commands\Test下新建一个定时文件 如下:WorkermanCommand
  2. 代码如下:
  3. /**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();
        }
    }
  4. 在测试服务器 shell执行 php artisan workman start  如图所示:表示已经开启成功开启
  5. workman 中的websocket及时接受消息返回给前端
  6. 测试

    打开chrome浏览器,按F12打开调试控制台,在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及时接受消息返回给前端

  7. 要加timer定时器的 参考http://doc.workerman.net/timer/add.html 官方文档