您现在的位置是:网站首页>

在WorkerMan中为什么要制定协议?

2020-01-05 23:14:0642人已围观

简介由于TCP是基于流的,客户端发送的请求数据是像水流一样流入到服务端,服务端探测到有数据到来后应该检查数据是否是完整的,因为可能只是一个请求的部分数据到达服务端,甚至可能是多个请求连在一起到达服务端。

由于TCP是基于流的,客户端发送的请求数据是像水流一样流入到服务端,服务端探测到有数据到来后应该检查数据是否是完整的,因为可能只是一个请求的部分数据到达服务端,甚至可能是多个请求连在一起到达服务端。

如何判断请求是否全部到达或者从多个连在一起的请求中分离请求,就需要规定一套通讯协议。

在WorkerMan中为什么要制定协议?

传统PHP开发都是基于Web的,基本上都是HTTP协议,HTTP协议的解析处理都由WebServer独自承担了,所以开发者不会关心协议方面的事情。 (推荐学习: workerman教程

然而当我们需要基于非HTTP协议开发时,开发者就需要考虑协议的事情了。

WorkerMan已经支持的协议

WorkerMan目前已经支持HTTP、websocket、text协议(见附录说明)、frame协议(见附录说明),ws协议(见附录说明),需要基于这些协议通讯时可以直接使用,使用方法及时在初始化Worker时指定协议,例如

1

2

3

4

5

6

7

8

9

10

11

12

13

use Workerman\Worker;

// websocket://0.0.0.0:2345 表明用websocket协议监听2345端口

$websocket_worker = new Worker('websocket://0.0.0.0:2345');

// text协议

$text_worker = new Worker('text://0.0.0.0:2346');

// frame协议

$frame_worker = new Worker('frame://0.0.0.0:2347');

// tcp Worker,直接基于socket传输,不使用任何应用层协议

$tcp_worker = new Worker('tcp://0.0.0.0:2348');

// udp Worker,不使用任何应用层协议

$udp_worker = new Worker('udp://0.0.0.0:2349');

// unix domain Worker,不使用任何应用层协议

$unix_worker = new Worker('unix:///tmp/wm.sock');

以上就是在WorkerMan中为什么要制定协议?的详细内容,更多请关注php中文网其它相关文章!


很赞哦! (74)

相关文章

文章评论

我的名片

网名:天下谁能与操尔

职业:PHP全栈工程师

现居:China-Wuhan

网址:

站点信息

  • 建站时间:2018-10-24
  • 网站程序:ThinkPHP
  • 主题模板《今夕何夕》
  • 文章统计:4条
  • 微信公众号:扫描二维码,关注我们