请问大家是如何将websocket在线连接用户列表数据和其他应用共享呢?

小七他哥

我目前的websocket服务已经开发完了,不过我发现在将在线用户列表的信息和其他应用共享的时候,搞得太复杂了,我先说说的处理方法吧:

我是在 redis 里面存了一个 sid 为 key,uid 为 value 的数组,sid是客户端js生成的一个唯一字符串,该值在用户登录的有效期内是保持不变的,uid就是数据表里的id字段值,自增数字型。

客户端每次连接成功后都会给服务发一条消息,服务端在 onMessage 回调方法里面会将 redis 里面的数据取出,然后 json_decode 处理成数组,然后检查当前的sid在不在这个数组里面,不在加加进去,加完之后又将该数组 json_encode 处理成字符串存回 redis 中去。

当客户端连接关闭的时候,又是 json_decode 解开,删除对应的 sid ,然后 json_encode 处理存回去。

我感觉我这个过程巨复杂,如果用户不停的在网页之间跳来跳去,就会不停的连接和关闭,感觉这个对服务器的压力太大了,所以请教各位有没有什么简单的方法呢?

1845 2 0
2个回答

lscho

http://doc2.workerman.net/push-in-other-project.html

GatewayClient 或许可以解决你的问题

  • 暂无评论
wanglong126

我也有类似的需求
我是使用的mysql数据库
用户上线时,设置online为1,离线时设置为online为0
页面依照是否在线和ID排序让在线的保持在前端
最近也正在考虑,如何实现在接口中获取客户端的实时状态

  • 小七他哥 2021-07-22

    我现在得到的方案是使用iframe,这样可以解决用户跳转页面频繁的连接关闭websocket,但是这个会导致页面展示的问题,我还没有采用。

  • wanglong126 2021-07-23

    @8083:嗯,我们的需求不太一样,你是做页面中数据处理的,我是做物联网的,页面查看终端设备的信息,以后可以多交流

年代过于久远,无法发表回答
🔝