今天给大家分享一个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"}
今天就分享到这里了,有什么疑问可以留言。