workerman初使用

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

  首先我须要的是一个相似系统广播的东西,因此用的是workerman的web-msg-sender,先去workerman的官网下载https://www.workerman.net/web-sender前端

 

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

 

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

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

  start_web文件是启动一个webservice,用于吐页面信息,因此这个其实不是必需要启动的windows

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

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

2120是IO服务的端口,前端经过这个端口可以监听到各类事件测试

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

  2.disconnect   当客户端断开链接是触发(通常是关闭网页或者跳转刷新致使)spa

  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

 

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

相关文章
相关标签/搜索