react-native - 我找不到合适的 api 来在我的应用程序中实现聊天?
问题描述
我想在我用 react-native + expo 构建的应用程序中实现一个真实的聊天功能,我试图用推送通知 + firebase 数据库创建一个自制的,但结果低于我的预期。虽然它正在工作,但它非常加载缓慢,我的应用程序崩溃并产生很多错误。我无法发布性能如此糟糕的应用程序。
我需要找到更好的解决方案。
我已经检查过pubnub chat engine
,pusher chat kit
但我找不到一个问题的答案:我如何列出(分页)每个频道(对话),以便制作一个类似 whatsapp 的收件箱视图,其中列出了我最后一次带有未读徽章的对话和显示最后一条消息和用户照片等。
有人可以告诉我如何组织这个吗?
谢谢你。
解决方案
基本上有两个部分:每个用户的收件箱列表和实时聊天。
收件箱列表存储在应用程序本地,可能是 sqlite。您可能有一个表消息:message_id、sender、message_text、received_time、read_time。..
一个简单的实时聊天可以通过发布和订阅MessageQueue来实现。
当连接到您的服务器时,每个应用程序(用户)都会订阅他自己的主题。当你的服务器收到一条新消息时,它会检查接收者是否在线,如果是,它会直接将消息发布到他的主题。客户端应用程序将在订阅后接收消息,并将消息存储在本地。未读标记在本地进行跟踪。
对于消息队列,您实际上可以只使用云服务。AWS 有 ActiveMQ 和 IoT 消息代理。通信是通过 Websocket 上的 MQTT。
推荐阅读
- javascript - 删除输入行后如何在javascript中计算价格?
- python - 使用索引 Pandas 替换选定的单元格
- reactjs - 只点击不透明部分 svg img
- yii2 - Yii2联合查询在部署时在服务器中不起作用,但在本地工作正常
- keras - 日志[“准确度”]的值与历元准确度之间的差异
- r - R:如何根据 data.frame 中的某些变量将二进制结果制成表格
- docker - Docker 容器不下载 Spacy 非英语模型
- reactjs - 在层次结构中使用 React 钩子
- jenkins - Jenkins 中的通配符以 DD-MM-YY 格式获取当前日期并附加到文件名
- reactjs - React Native:为什么有些模块在 package.json 而不是 node_modules?