想问问大神,Cookie在Workerman中怎么获取,好像试了很多方法都不能获取。或者提供一个可以验证登录的方法也行
自问自答:https://segmentfault.com/q/1010000008010925?_ea=1529407 这个是不能使用的。 首先你要搞清楚 cookie和session的原理。cookie和session都是需要通过http协议请求头来创建的,也就是说需要浏览器发起创建。设置cookie也会涉及到域那些,所以在cli下是不能使用
自问自答:(自己想) 直接onconnect(这里正如手册上面说的,基本用不了onconnect)后,发送服务端登录信息,如: {'type':'login','token':'123456789456123456789'}然后让服务端在onmessage上验证用户登录信息。
我认为 “那篇segmentfault参考” 说法欠妥:
//客户端 $ws_client->onConnect = function($connection){ $connection->wsHttpHeader = array( 'Cookie' => 'k1=v1', ); }; //服务端 $ws_worker->onConnect = function($connection){ $connection->onWebSocketConnect = function($connection , $http_header){ print_r($_COOKIE); }; };
基于token 验证,就是把用户信息加密成token返回前端,然后前端提交token给你验证,你接收到了把token解密
自问自答:https://segmentfault.com/q/1010000008010925?_ea=1529407
这个是不能使用的。
首先你要搞清楚
cookie和session的原理。cookie和session都是需要通过http协议请求头来创建的,也就是说需要浏览器发起创建。设置cookie也会涉及到域那些,所以在cli下是不能使用
自问自答:(自己想)
直接onconnect(这里正如手册上面说的,基本用不了onconnect)后,发送服务端登录信息,如:
{'type':'login','token':'123456789456123456789'}然后让服务端在onmessage上验证用户登录信息。
我认为 “那篇segmentfault参考” 说法欠妥:
(1) 首先websocket协议在握手阶段是基于http协议的,那么就意味着是可以设置cookie的。
(2) 浏览器显然支持cookie,因为浏览器支持http协议和websocket协议;但是基于workerman开发的websocket client也同样可以使用cookie 【只不过这个cookie的实现不是很正统】,比如基于官方的ws协议实现支持cookie的websocket客户端【两端均工作于CLI模式】:
基于token 验证,就是把用户信息加密成token返回前端,然后前端提交token给你验证,你接收到了把token解密