Tp3.2实现websocket能力(一)
首先从单服务器实现开始
我的系统是centos系统,lnmp搭建的环境,php5.6
1:首先检查环境是否支持
curl -Ss http://www.workerman.net/check.php | php
PHP Version >= 5.3.3 [OK]
Extension pcntl check [OK]
Extension posix check [OK]
2.通过composer安装workerman
或者也可以去我的网盘下载示例:
链接:https://pan.baidu.com/s/1LJccnNQlBVMj9SJcyWyFyw
提取码:v5h5
3.需要将Workerman中php文件,除了Lib/Constants.php外,其它所有的php文件添加上.class
否则无法引入,
将更改好的文件放入项目根目录的中的Application文件夹下
4.这个时候在我们自己的控制器目录里边创建一个WorkerManController.class.php文件
<?php
namespace WeChat\Controller;
use Common\Controller\EtomatoCMS;
use Workerman\Worker;
/**
* webSocket功能
* 通过服务器主动向客户端push内容
*/
class WorkerManController extends EtomatoCMS {
/**
* 构造函数
* @access public
*/
public function __construct(){
global $worker;
$worker = new \Workerman\Worker('websocket://0.0.0.0:8000'); //实例化 Websocket服务
$worker->count = 1; //设置进程数
// worker进程启动后建立一个内部通讯端口
$worker->onWorkerStart = function ($worker) {
// 开启一个内部端口,方便内部系统推送数据,Text协议格式 文本+换行符
$inner_text_worker = new Worker('Text://0.0.0.0:8001'); //8001
$inner_text_worker->onMessage = function ($connection, $buffer) {
// $data数组格式,里面有uid,表示向那个uid的页面推送数据
$data = json_decode($buffer,true);
$uid = $data[