wuqinqiang
- wuqinqiang 发布了话题论升职
客户端按照一定频次访问接口获取最新消息,不就是前几年的轮询吗。H5的websocket提供了全双工的通讯服务
- wuqinqiang 赞了回复
我又帮你调整了一下格式,以后要注意!
- wuqinqiang 赞了回复
拉不出屎,怪地球没有吸引力。
- wuqinqiang 2019-04-30 已签到连续签到1天,获得了5个金钱
- wuqinqiang 回复了 immusen 的回答
swoole的websocket握手有默认机制,但你也是能有机会附加操作的(onHandShake回调中,你一样能像HTTP那样加自定义Header或者path_info的方式携带额外数据),这是你可以验证用户身份的第一次时机;
第二次时机,连接成功后,客户端用你自己约定的方式发token给服务器(rpc、json....),完成验证(Who am i)。
验证后绑定:$server->bind($fd,$uid)绑到connection_info上,之后随时能$Server->getClientInfo()取回uid。这一块已经明白了,客户端在请求转换ws协议是基于http(这个连接的过程我就可以携带参数过去了),请求报文中携带了Upgrade参数,只要服务器支持当前服务,服务器先把自身切换至sw服务,接着response成功的标示。客户端和服务器端连接成功。首先先感谢老哥的回答。
还有一个问题就是,我做了fd和uid的绑定,但是我刷新一次客户端就相当于重新触发了一次onopen,那么当前的fd又改变了,fd自增,之前哪个fd其实还存在进程中的,只有当onclose的时候才会被关闭。那么问题是刷新一次客户端当前用户和fd的映射岂不是不存在了,因为fd改变了。
再次感谢老哥的回答。