• wokerman中自定义协议的使用和测试


    今天给大家分享一个wokerman的自定义协议使用,以及最后的测试结果。

    根据wokerman的自定义协议文档,简单使用text文本协议,telnet测试,协议内容是json串+ 为传输协议

    在wokerman->wokerman->Protocols下新建文件例如Xieyi.php

    <?php

    namespace WokermanProtocols;

    class Xieyi {

      //分包(检验包的完整性)

      public static function input($data) {

        $pos = strpos($data,' ');

        if ($pos===false) {

          return 0;

        } else {

          return $pos+1;

        }

      }

      //打包(客户端传递过来的json数据进行打包加结束符 )

      public static function encode($data) {

        return json_encode($data).' ';

      }

      //解包(服务端传递过来的array数据进行解包)

      public static function decode($data) {

        return json_decode(trim($data,' '),true); //这块代码官网有误,导致使用时前端数据一直不出现,加上这个就可以了。

      }

    }

    ?>

    然后再项目中创建文件start.php使用代码如下:

    <?php

    use WorkermanWorker;
    require_once __DIR__ . '/vendor/workerman/workerman/Autoloader.php';

    $zidingyi = new Woker('Xieyi://0.0.0.0:1234');

    $zidingyi->onMessage = function($connection,$data) { //$data数据就是当客户端发给服务端时协议会自动解包数据

      $connection->send(array('code'=>'0','msg'=>'ok')); //当服务端把数据发给客户端时协议会自动打包数据

      var_dump($data); //通过自定义协议解包得出的数据

    }

    Worker::runAll();

    ?>

    测试阶段:需要使用

    cmd->到start.php文件下->php start.php 开启workerman服务器

     然后再打开一个

    cmd->telnet 127.0.0.1 1234

    直接输入 就是发个空数据,前端接收为空,解包失败就null了

    例如:{"type":"message"}  

    今天就分享到这里了,有什么疑问可以留言。

  • 相关阅读:
    SpringBoot_web开发-【实验】-员工列表-公共页抽取
    下载 Linux 内核的脚本
    uboot 修改代码 增加 环境变量
    Linux FHS
    Redis源码分析(二十五)--- zmalloc内存分配实现
    Redis源码分析(二十四)--- tool工具类(2)
    Redis源码分析(二十四)--- tool工具类(2)
    数据结构(二)——排序
    数据结构(一)——树
    python(三)——while语句
  • 原文地址:https://www.cnblogs.com/sxiangyues/p/14871326.html
Copyright © 2020-2023  润新知