wuqinqiang

wuqinqiang

这家伙有点懒,还没写个性签名!

  • 财富值90
  • 威望值0
  • 总积分420

个人信息

  • 客户端按照一定频次访问接口获取最新消息,不就是前几年的轮询吗。H5的websocket提供了全双工的通讯服务

  • 发布了话题
    Yii+swoole+vue 实现聊天室 demo
  • 赞了回复

    我又帮你调整了一下格式,以后要注意!

  • 发布了话题
    使用 PHP 开启 leetcode 刷题之路
  • 赞了回复

    拉不出屎,怪地球没有吸引力。

  • 2019-04-30 已签到
    连续签到1天,获得了5个金钱
  • 回复了 的回答

    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改变了。

    再次感谢老哥的回答。

  • 赞了回答

    swoole的websocket握手有默认机制,但你也是能有机会附加操作的(onHandShake回调中,你一样能像HTTP那样加自定义Header或者path_info的方式携带额外数据),这是你可以验证用户身份的第一次时机;
    第二次时机,连接成功后,客户端用你自己约定的方式发token给服务器(rpc、json....),完成验证(Who am i)。
    验证后绑定:$server->bind($fd,$uid)绑到connection_info上,之后随时能$Server->getClientInfo()取回uid。

见习主管 等级规则
420/500
资料完整度
10/100
用户活跃度
0/100

Ta的关注

1

Ta的粉丝

3

Ta的访客

11