架构是gatewayworker + webman,bussiness进程放在webman里。逻辑是连接websocket的时候带上token,在onconnect事件根据token读取用户id,然后保存到session里,onmessage读取session里的用户id判断用户身份。本地websocket测试的时候
发送的第一个消息能获取到session,第二个和第三个获取不到,加上usleep后就可以了,或者连接的ip改成192.168.3.53这样的,也可以了
session记录代码
这是为啥?
大佬帮看下 @walkor
很纳闷啊,设置是在connect的时候,为什么第一条onmessage事件有数据,第二条后就获取不到session了
session操作部分的代码呢
加到问题描述里了
gatewayWorker有路由功能,你是否设置了路由?
没有,之前开启过,后面关闭了,127.0.0.1 改成192.168.3.53 就可以了,或者加一行代码$_SESSION = Gateway::getSession($clientId ); 也好了,或者在发送消息的时候usleep下也可以
看不出什么问题,我这本地也无法复现
我是搭在wsl里的
这个之前很早就注释了
可以提供一个最小复现代码吗