今天给大家分享一个wokerman的自定义协议使用,以及最后的测试结果。
根据wokerman的自定义协议文档,简单使用text文本协议,telnet测试,协议内容是json串+\n为传输协议
在wokerman->wokerman->Protocols下新建文件例如Xieyi.php
<?php
namespace Wokerman\Protocols;
class Xieyi {
//分包(检验包的完整性)
public static function input($data) {
$pos = strpos($data,‘\n‘);
if ($pos===false) {
return 0;
} else {
return $pos+1;
}
}
//打包(客户端传递过来的json数据进行打包加结束符\n)
public static function encode($data) {
return json_encode($data).‘\n‘;
}
//解包(服务端传递过来的array数据进行解包)
public static function decode($data) {
return json_decode(trim($data),true);
}
}
?>
然后再项目中创建文件start.php使用代码如下:
<?php
use Workerman\Worker;
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‘)); //当服务端把数据发给客户端时协议会自动打包数据
}
Worker::runAll();
?>
测试阶段:需要使用
cmd->到start.php文件下->php start.php 开启workerman服务器
然后再打开一个
cmd->telnet 127.0.0.1 1234
直接输入\n就是发个空数据
{"type":"message"}\n
今天就分享到这里了,有什么疑问可以留言。
原文:https://www.cnblogs.com/sxiangyues/p/14871326.html