zoukankan      html  css  js  c++  java
  • PHP workerMan tcp与webSocket 透传互通

     1 <?php
     2 
     3 $work_path = dirname(__FILE__);   
     4 chdir($work_path);
     5 
     6 use WorkermanWorker;
     7 use WorkermanLibTimer;
     8 
     9 require_once './Workerman/Autoloader.php';
    10 
    11 date_default_timezone_set("PRC");
    12 
    13     // websocket 协议的worker
    14 $ws_worker = new Worker('Websocket://0.0.0.0:7011');
    15 // 这里只能写1
    16 $ws_worker->count = 1;
    17 // websocket server 启动后在当前进程增加一个socket监听
    18 $ws_worker->onWorkerStart = function($ws_worker)
    19 {
    20     // 增加一个Socket端口的监听设备发来的数据
    21     $socket_worker = new Worker('tcp://0.0.0.0:7012');
    22     // 当设备发来数据时如何处理
    23     $socket_worker->onMessage = function($connection, $data)
    24     {
    25         // 这里处理设备发来的数据 $data
    26         // 比如像这样给所有的WebSocket连接转发数据
    27         global $ws_worker;
    28         
    29         if ($data === FALSE) return;
    30         
    31         foreach($ws_worker->connections as $ws_con)
    32         {
    33            $ws_con->send($data);
    34         }
    35     };
    36     // 给ws_worker添加一个属性保存socket_worker,方便获取
    37     $ws_worker->socketWorker = $socket_worker;
    38     // 执行监听
    39     $socket_worker->listen();
    40 };
    41 
    42 // websocket协议也就是浏览器发来数据时
    43 $ws_worker->onMessage = function($connection, $data)
    44 {
    45     // 假设需要转发给所有的设备
    46     global $ws_worker;
    47     foreach($ws_worker->socketWorker->connections as $socket_con)
    48     {
    49          $socket_con->send($data);
    50     }
    51 };
    52 
    53 Worker::runAll();
  • 相关阅读:
    2190 ACM 数学概率论的乘法和加法原则
    2186 ACM 水题 int 向下取整
    2110 ACM Crisis of HDU 母函数
    2079 ACM 选课时间 背包 或 母函数
    2111 ACM 贪心 水题
    2108 ACM 向量积 凹凸
    My Web Developer Roadmap
    2109 ACM 排序
    2107 ACM 水题
    vi的常用命令
  • 原文地址:https://www.cnblogs.com/zjfree/p/6491740.html
Copyright © 2011-2022 走看看