在聊天室工作的过程中,用户首先应该订阅(登录),在数据库中存储了用户与直播ID的对应信息之后,才能让用户去收发消息。
订阅的数据结构按照MQ的方式来进行操作。
我们需要设置一下一级topic和二级topic,一级Topic是应用类型,在这里既然只有直播这一种应用类型,所以一级TOPIC可以设置为定值。
二级Topic的值设置为直播ID。
然后应该有一个Type,这个Type是发送到WS的数据类型,比如:检测心跳、发送消息或者订阅。
"type":"login",
"user_id":"10086",
"first_topic":"1",
"second_topic":"1"
然后需要定义用户ID与直播ID在数据库中的存储数据结构。
const redis_key_group_user = 'ws_topic_first_topic_second_topic';//分组下对应的用户,可以通过直播ID来获取下面所有的用户
const redis_key_user_group = 'ws_user_fd';//fd对应的分组
const user_bind_redis_key = "ws_user_bind_fd_redis_key";//fd绑定用户的redis_key hash表 fd=》user
const fd_bind_user_redis_key = "ws_fd_bind_user_redis_key";//用户绑定fd的redis_key hash表 user=>fd
const redis_expire_time=86400;
名词解释:fd 在swoole中对每个用户分配的唯一标识。
OK,数据结构整理完毕,下一步可以编写代码了。