
最近做微信小程序有用到 websocket...有个一对一的聊天功能,如果有一方 websocket 处于脱机状态( websocket closed ),如何保证在他下次连接 websocket 时能接收到另一端发来的信息?
有想过将聊天记录存放在文件中数然后数据库记录文件地址,通过对文件的读写来记录聊天信息,在用户重连 websocket 时将聊天记录读取出来,但是这样频繁读写文件会不会有隐患?
1 qilishasha 2019 年 8 月 14 日 就是存数据库的,存内存才有隐患 |
2 momocraft 2019 年 8 月 14 日 自己维护同步状态,比如 seq no / timestamp 不过在国内不自己留一份聊天记录是合法的吗? |
3 nnnToTnnn 2019 年 8 月 14 日 消息队列 mq |
4 pubby 2019 年 8 月 14 日 刚做过一个 我们是这样设计的 会话:会话 ID,用户 ID... (每个会话的基本信息,参与人之类的) 消息:消息 ID,用户 ID,消息类型+内容 (统一保存消息) 会话_消息:用户 ID,会话 ID,消息 ID,时间 (谁什么时候在哪个会话发了消息) 用户_会话:用户 ID,会话 ID,最新消息 ID,已读消息 ID,未读消息数 (用户在每个会话中的状态) |
5 yuting0501 2019 年 8 月 14 日 via iPhone 看成向脱发用户发送,不好意思歪楼了,你们继续。。 |
6 mritd 2019 年 8 月 14 日 via iPhone @yuting0501 #5 我也是 |
7 sneezry 2019 年 8 月 14 日 via iPhone 用 MQTT over websocket,这个需求协议本身能帮你实现 |
8 liuzhen 2019 年 8 月 14 日 就你自己说的方式,不实时落地文件就好了,放在内存或队列里定时落地 |
9 frozenshadow 2019 年 8 月 14 日 via Android @sneezry 没有建立过连接的用户不行吧 |
12 Bakarua OP @pubby 已经解决啦 发给不在线的用户的信息用 redis 做缓存 等用户连接上 websocket 去 redis 里根据用户 id 匹配该未接收的消息 然后推送给他 |
13 Bakarua OP @yuting0501 能定向脱发用户推送信息 那市场肯定很大 |