按照手册的操作
public onMessage($client_id, $message)
{
$group = 'room-1';
$_SESSION = $message;
$_SESSION = $message;
Gateway::joinGroup($client_id, $group);
var_export(Gateway::getClientSessionsByGroup($group));
}
应该打印出来是
array(
'7f00000108fc00000008' => array('name'=>'Tom', 'sex'=>1),
'7f00000108fc00000009' => array('name'=>'Joan', 'sex'=>0),
)
但是我打印的只有client_id
win下 laravel框架
这是为什么,感谢
手册里的教程是在GatewayWorker容器里的,是在Events.php里操作GatewayWorker容器对应客户端的$_SESSION变量。所以可以正常返回。
你的代码是在是在apache/php-fpm环境这样的webserver容器里的,
利用GatewayClient远程操作GatewayWorker。直接用$_SESSION变量只会影响本地apache/php-fpm,
对于远程GatewayWorker不会有效。Gateway手册http://doc2.workerman.net/326141也有讲到webserver里的$_SESSION和GatewayWorker是不互通的。
虽然GatewayClient不能通过$_SESSION变量来操作GatewayWorker的session,
但是仍然可以通过Gateway::setSession/getSession/updateSession接口远程操作GatewayWorker的session,参见http://doc2.workerman.net/326149。所以把$_SESSION操作换成响应的接口即可。
感谢walkor大大