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

 

  同時感謝過程當中熱心幫忙的前輩

相關文章
相關標籤/搜索