关于订阅发布服务器的简单说明----类似mqtt

服务器所做的事很简单,就是把订阅的事件与句柄client_id,绑定起来,这样就能通过事件找到句柄,通过句柄就能找到客户端,以上是客户端订阅事件,实质是把一个字符串作为key,客户端连接作为value。

客户端发布事件,服务器收到发布事件的数据,通过事件关键字找到对应的客户端,可能有多个客户端订阅同一个事件,没事一个一个处理。

有点像登陆包绑定uid一样的意思,订阅还是便于理解一些的,也就是靠一个array()来实现具体功能,

事件名称作为数组下标,元素就是客户端连接句柄,一个数组下标对应的人元素可以填充多个连接句柄,也就是多个客户端可以订阅同一个事件,用uid来理解就是微信可以电脑手机同时登录。

某个客户端发布了事件,也就是通过事件去遍历这个数组了,遍历数组也就是遍历客户端,注意这里的遍历是直接遍历订阅该事件的客户端,因为通过事件就直接找到了下标。快速的让我怀疑,为什么不用C。

神奇的数组,神奇的键值对,内部是通过什么算法去实现的,暂时不知道,可能是散列吧,事件是字符串,通过hash算法可以把它转化成一个数字,这个数组就是下标了,大家肯定有疑问,不同的字符串可能会得到同一个数字,是的,那就看散列分布的是否均匀了,,还是有疑问,分布的再均匀还是有重复的,是的,重复的时候就得靠队列来遍历了。

 这就是神奇的hash33,数据模型分析出来的,为什么是33,没人能具体回答出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值