workerman初使用

首先测试环境是windows,linux的以后再说。

  首先我需要的是一个类似系统广播的东西,所以用的是workerman的web-msg-sender,先去workerman的官网下载https://www.workerman.net/web-sender

 

  下载成功后将文件解压放到项目目录下

 

  主要说下几个文件的作用 首先是start.php 是wokerman的启动文件,在linux下运行这个文件,如果是windows下,直接双击start_for_win.bat文件

  启动文件主要也是启动了start_io和start_web这两个文件

  start_web文件是启动一个webservice,用于吐页面信息,所以这个其实不是必须要启动的

  start_io文件宅这里应该是比较关键的,先看一下代码

// PHPSocketIO服务
$sender_io = new SocketIO(2120);
// 客户端发起连接事件时,设置连接socket的各种事件回调
$sender_io->on('connection', function($socket){}

2120是IO服务的端口,前端通过这个端口能够监听到各种事件

  1.login事件      当用户进入这个页面(包括刷新)就会更新一个uid,UID是我们识别用户的标志

  2.disconnect   当客户端断开连接是触发(一般是关闭网页或者跳转刷新导致)

  3.workerStart   当$sender_io启动后监听一个http端口,通过这个端口可以给任意uid或者所有uid推送数据

 

 

  $sender_io->to($to)->emit('name', 'msg');//$to是要给谁发送消息,是uid的值  name是前端接收的事件名 msg是发送的消息

 

// 一个定时器,定时向所有uid推送当前uid在线数及在线页面数
    Timer::add(1, function(){
        global $uidConnectionMap, $sender_io, $last_online_count, $last_online_page_count;
        $online_count_now = count($uidConnectionMap);
        $online_page_count_now = array_sum($uidConnectionMap);
        // 只有在客户端在线数变化了才广播,减少不必要的客户端通讯
        if($last_online_count != $online_count_now || $last_online_page_count != $online_page_count_now)
        {
            $sender_io->emit('update_online_count', "当前<b>{$online_count_now}</b>人在线,共打开<b>{$online_page_count_now}</b>个页面");
            $last_online_count = $online_count_now;
            $last_online_page_count = $online_page_count_now;
        }
    });

  这里的话是IO文件里使用的 ,1就是定时的时间

  另外还用到了wokerman的数据库操作,下面直接放地址

  1.http://doc.workerman.net/640201

  2.https://blog.csdn.net/chenluliang/article/details/70170932

 

  同时感谢过程中热心帮忙的前辈

 

posted @ 2018-08-20 14:46  婆娑灬奈何  阅读(674)  评论(0)    收藏  举报