$worker->onMessage 对 http 协议没有作用吗?

workercat

我使用了 workman 来监听 http 协议,但是在我通过页面发起请求后,并没有在 terminal 看到有对 $worker->onmenssaee = function ($connection, $data) { var_dump($data);}; 回调输出。请问这是怎么回事呢?
Worker 代码:

$worker = new Worker('http://192.168.50.168:8800');
  // 这里进程数必须设置为1
  $worker->count = 1;
  // worker进程启动后建立一个内部通讯端口
  $worker->onWorkerStart = function($worker)
  {
    // 开启一个内部端口,方便内部系统推送数据,Text协议格式 文本+换行符
    $inner_text_worker = new Worker('Text://192.168.50.168:5678');
    $inner_text_worker->onMessage = function($connection, $buffer)
    {
        global $worker;
        // $data数组格式,里面有uid,表示向那个uid的页面推送数据
        $data = json_decode($buffer, true);
        $uid = $data;
        print_r($data);
        // 通过workerman,向uid的页面推送数据
        $ret = sendMessageByUid($uid, $buffer);
        // 返回推送结果
        $connection->send($ret ? 'ok' : 'fail');
    };
    $inner_text_worker->listen();
  };
  // 新增加一个属性,用来保存uid到connection的映射
  $worker->uidConnections = array();
  // 当有客户端发来消息时执行的回调函数
  $worker->onMessage = function($connection, $data)use($worker)
  {
    var_dump($data); //  这里使用输出来调试,但是没有发现有输出

    // 判断当前客户端是否已经验证,既是否设置了uid
    if(!isset($connection->uid))
    {
       // 没验证的话把第一个包当做uid(这里为了方便演示,没做真正的验证)
       $connection->uid = $data;
       /* 保存uid到connection的映射,这样可以方便的通过uid查找connection,
        * 实现针对特定uid推送数据
        */
       $worker->uidConnections = $connection;
       return;
    }
  };

HTML页面代码:

<!DOCTYPE html5>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>测试页面</title>
    </head>
    <body>
        <form action="http://blog.dev/work" method="get">
            <p>
                <label>Name:</label>
                <input type="text" name="msg" />
                <input type="hidden" name="uid" value="uid_2016_06_01" />
            </p>
            <p><input type="submit" value="发送" /></p>
        </form>
    </body>
</html>
3748 1 0
1个回答

walkor

确认http://blog.dev/work是workerman的地址?
看到你的workerman监听的是8800端口,并不是80端口。

年代过于久远,无法发表回答
🔝