一、
按照手册如下代码,建立UDP监听:
$udp_worker = new Worker('udp://127.0.0.1:9090');
$udp_worker->onMessage = function($connection, $data){
    var_dump($data);
    $connection->send('get');
};
Worker::runAll();问题:如何实现多个客户端的udp返回数据,也就是 $connection->send('get'); 如何给指定IP和port发送数据?
二、
编写如下代码。
_功能:ws和udp之间互相转换;_
操作1:用websocket在线测试工具向workerman发送数据结果报错;
报错1:“Warning: Creating default object from empty value ”,也就是“$iot_connection->http_connection = $http_connection;”有问题。
操作2:用udp测试工具向workerman发送数据结果报错;
报错1:“Notice: Trying to get property of non-object”,也就是“$iot_connection->http_connection->send($data);”有问题。
<?php
use Workerman\Worker;
require_once __DIR__ . '/vendor/workerman/Autoloader.php';
// 通信协议
$iot_worker = new Worker("udp://0.0.0.0:9001");
// 启动1个进程对外提供服务
$iot_worker->count = 1;
$iot_worker->onWorkerStart = function () {
    $inner_worker = new Worker('websocket://0.0.0.0:9090');
    // 设置端口复用,可以创建监听相同端口的Worker(需要PHP>=7.0)
    $inner_worker->reusePort = true;
    $inner_worker->onMessage = function ($http_connection, $data) {
        $http_connection->send($data);
        global $iot_connection;
        $iot_connection->http_connection = $http_connection;
    };
    $inner_worker->listen();
};
//udp收到数据
$iot_worker->onMessage = function ($iot_connection, $data) {
    //----start----
    var_dump($data);
    //返回给udp
    $iot_connection->send($data);
    //发送给websocket
    global $iot_connection;
    $iot_connection->http_connection->send($data);
    //----end------
};
// 如果不是在根目录启动,则运行runAll方法
if (!defined('GLOBAL_START')) {
    Worker::runAll();
}
报错1是因为$iot_connection是个null,不是对象,$iot_connection->http_connection = $http_connection;是对象的用法。
报错2是因为$iot_connection->http_connection不存在
您好,请问:报错2是因为$iot_connection->http_connection不存在 有什么解决办法吗?
您好,请问:Notice: Trying to get property of non-object”,也就是“$iot_connection->http_connection->send($data);” 是怎么解决的?