Tools
首页
画图
音乐
采集
记事
博客
实验室
登录
lypeng
146
文章
11
分类
46
记事
分类
生活-[23]
Linux-[24]
前端-[9]
数据库-[16]
PHP-[31]
git-[7]
其他-[6]
python-[20]
算法-[4]
React-Native-[4]
中草药-[2]
广告位1
广告位2
首页
/ PHP
返回列表
workerman学习(一)基础入门
阅读:955
发布:2018-03-02
作者:lypeng
[TOC] workerman学习记录(基于ubuntu16.04) # 安装使用 ## 前提要求 有php环境,且安装了相关扩展,关于扩展安装可以参考官方,或者上篇文章. ## 下载安装 mkdir workerman && cd workerman && git clone https://github.com/walkor/Workerman ## 开始体验 ### 创建index.php文件,目录结构如下 ``` workerman |----Workerman(官方git库) |----index.php |----README.md ``` index.php内容如下: ```php count = 1; // 连接回调 $worker->onConnect = function ($connection){ echo "connection success\n"; }; // 接受发送消息 $worker->onMessage = function ($connection,$data){ $connection->send("Hello World".serialize($data)); }; // 关闭连接 $worker->onClose = function ($connection){ echo "connection close \n"; }; $worker::runAll(); ``` ### 在终端执行 `php index.php start` ### 浏览器访问 `http://127.0.0.1:8085` 即可看到效果 ### 关于0.0.0.0与127.0.0.1的理解 0.0.0.0指代全部,范围比较大,包括了127.0.0.1 可以在连接回调中进行IP限制,代码如下,这里的$connection相当与connection类中的this ```php $worker->onConnect = function ($connection){ // IP 白名单验证 if($connection->getRemoteIP() != '127.0.0.1'){ $connection->close("IP Address Forbidden"); } }; ``` # 协议相关 ## 我对协议的理解 类似ftp:// http:// https:// file:// wx:// 这些,包含://的,都称为协议。 简单的协议一般包含两部分:(来自workerman手册) 1. 区分数据边界的标识 2. 数据格式定义 协议主要功能:--》输入数据--》处理数据--》返回数据 ## 协议访问方式 |协议|访问方式| |---|---| |http| 浏览器访问| |websocket| chrome console| |tcp|telnet| ## websocket协议 1. 先连接 ```JavaScript var ws = new WebSocket('ws://127.0.0.1:8085/'); ws.onmessage = function(event) { console.log('MESSAGE: ' + event.data); }; ``` 2. 发送数据 `ws.send("Hi Tinywan");` ## TCP协议 telnet 127.0.0.1 8085(中间是空格,没有冒号) 退出用Ctrl+],然后quit,Ctrl+C,Ctrl+D都不起作用 ## WorkerMan已经支持的协议 WorkerMan目前已经支持HTTP、websocket、text协议(见附录说明)、frame协议(见附录说明),ws协议(见附录说明),需要基于这些协议通讯时可以直接使用,使用方法及时在初始化Worker时指定协议,例如 use Workerman\Worker; // websocket://0.0.0.0:2345 表明用websocket协议监听2345端口 $websocket_worker = new Worker('websocket://0.0.0.0:2345'); // tcp Worker,直接基于socket传输,不使用任何应用层协议 $tcp_worker = new Worker('tcp://0.0.0.0:2348'); *** 以下四种: udp unix text frame目前还没接触到 *** // udp Worker,不使用任何应用层协议 $udp_worker = new Worker('udp://0.0.0.0:2349'); // unix domain Worker,不使用任何应用层协议 $unix_worker = new Worker('unix:///tmp/wm.sock'); // text协议 $text_worker = new Worker('text://0.0.0.0:2346'); // frame协议 $frame_worker = new Worker('frame://0.0.0.0:2347'); ## 两个终端之间通信发送数据 参考:http://www.cnblogs.com/tinywan/p/7420622.html?_blank
------本文结束
感谢阅读------
上一篇:
【转】php安装扩展的几种方法
下一篇:
让Apache中的PHP以fpm方式运行