workerman 的websocket协议实现 有cookie ,这个可以用来实现session吗?有什么注意点吗?

wuchuguang

项目基于workerman 的websocket协议。现在想实现一套类似$_SESSION方式来处理用户状态什么的。对于session不算很了解。在workerman上实现session有什么注意点吗? 谢谢。

阅读 4198
1个回答

walkor

workerman里面直接利用$connection对象存储对应链接的数据即可。
php的对象有个特性,可以动态给它赋值属性,可以利用这点实现某个客户端的数据存储。

例如动态增加个session属性来存储session信息,就可以类似这样

     $worker->onMesssae = function($con, $data) {
        // data={"type":"login", "user_id":"101", "name":"xxxx"}
        $data = json_enocde($data, true);
        // 没设置过session属性,则没登录
        if (!isset($con->session)) {
            // 给链接对象动态增加一个session属性
            $con->session = array('user_id'=>$data, 'name'=>$data);
        }
        ...

如果是GatewayWorker,则直接可以用$_SESSION设置获取当前链接的session数据

  • wuchuguang 2016-08-15

    好的。刚刚我用您 这方式实现了,明天测一测。非常感谢。

  • walkor 2016-08-15

    不客气

  • ontheway 2016-12-28

    这样,如果知道别人的user_id就可以冒充别人登录了

  • walkor 2016-12-29

    是的,上面为了方便演示,没有加权限验证