返回介绍

1.17.6 text协议

发布于 2020-05-17 11:52:44 字数 3608 浏览 842 评论 0 收藏 0

Workerman定义了一种叫做text的文本协议,协议格式为 数据包+换行符,即在每个数据包末尾加上一个换行符表示包的结束。

例如下面的buffer1和buffer2字符串符合text协议

// 文本加一个回车
$buffer1 = 'abcdefghijklmn
';
// 在php中双引号中的n代表一个换行符,例如"n"
$buffer2 = '{"type":"say", "content":"hello"}'."n";

// 与服务端建立socket连接
$client = new stream_socket_client('tcp://127.0.0.1:5678');
// 以text协议发送buffer1数据
fwrite($client, $buffer1);
// 以text协议发送buffer2数据
fwrite($client, $buffer2);

text协议非常简单易用,如果开发者需要一个属于自己的协议,例如与手机App传输数据或者与硬件通讯等等,可以考虑使用text协议,开发调试都非常方便。

text协议调试

text协议可以使用telnet客户端调试,例如下面的例子。

test.php

require_once __DIR__ . '/Workerman/Autoloader.php';
use WorkermanWorker;

$text_worker = new Worker("text://0.0.0.0:5678");

$text_worker->onMessage =  function($connection, $data)
{
    var_dump($data);
    $connection->send("hello world");
};

Worker::runAll();

执行php test.php start显示如下

php test.php start
Workerman[test.php] start in DEBUG mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.2.7          PHP version:5.4.37
------------------------ WORKERS -------------------------------
user          worker        listen                         processes status
root          none          myTextProtocol://0.0.0.0:5678   1         [OK]
----------------------------------------------------------------
Press Ctrl-C to quit. Start success.

重新打开一个终端,利用telnet测试(建议用linux系统的telnet)

假设是本机测试, 终端执行 telnet 127.0.0.1 5678 然后输入 hi回车 会接收到数据hello worldn

telnet 127.0.0.1 5678
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hi
hello world

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文