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();
  • 相关阅读:
    批量修改文件的名字
    字节码指令以及操作数栈的分析
    字节码文件的分析
    类加载器详解
    类的加载-连接-初始化
    电商订单ElasticSearch同步解决方案--使用logstash
    springboot整合Mangodb实现crud,高级查询,分页,排序,简单聚合
    mongodb安装教程(亲测有效)
    Azure : 通过 SendGrid 发送邮件
    用java实现删除目录
  • 原文地址:https://www.cnblogs.com/zjfree/p/6491740.html
Copyright © 2011-2022 走看看