首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS聊天应用设计

iOS聊天应用设计
EN

Stack Overflow用户
提问于 2016-05-27 06:44:31
回答 1查看 248关注 0票数 1

我正在使用socketsIO和一个节点后端,在iOS上构建一个简单的聊天应用程序,目的是为了好玩(并有项目可以从中获得经验)。我正在试着找出最好的消息设计。我计划使用一个mongoDB数据库,在该数据库中,每个会话都将存储其消息数据。每当客户端向服务器发送新消息时,服务器都会将其添加到数据库中相应的会话中。

我也希望创建一个用户注册/登录系统,这将添加到数据库中。然而,我在谷歌上搜索了很多,我真的不确定创建一个由对话(每当触发sentMessage事件就会更新)和用户数据组成的数据库是否是正确的方法。此外,我还看到一些人谈论将聊天记录保存在实际设备上,而不是保存在数据库中?像这样的聊天应用程序的常见设计模式是什么?

EN

回答 1

Stack Overflow用户

发布于 2016-05-27 07:28:24

在设计中,我也会使用socket.io来发送消息。它背后有一个很棒的社区,我也会使用MongoDb,因为所有的东西都使用JSON格式,而且由于使用了JavaScript,它与Node集成得非常好。

现在你感兴趣的部分是REDIS。Redis是一个位于网络RAM中的数据库,如果你需要更高的流量/需要更快的速度/更少的挂起和等待,应该与mongodb一起使用。

REDIS将是你与会话聊天的临时保存,因为如果你计划保存每条消息的聊天,那么在机器上做磁盘写/读/查询是很麻烦的(看看你的MongoDB)。这样做,从长远来看,MongoDb不会有很好的伸缩性,而且速度也没有REDIS快。请注意,REDIS数据库将只保存临时聊天日志,比如说最近一百万个聊天会话或一些限制(它都在RAM中,所以大小是有限制的,在一台服务器上不能有‘t或数百’t的RAM )。

所以数据流应该看起来像这样

Ajax/Observable

  • Server用户发送消息

  • 服务器通过超文本传输协议(S) post/put接收消息-Ajax/Observable

  • Server将使用

将消息发送给指定用户,同时将消息保存到特定用户的REDIS中通过io事件获取屏幕上的更新。

--中间应该检查REDIS数据库是否已满。如果服务器已满,则删除最后10,000条非活动消息(如果服务器尚未满,则可能是1年前的消息)以腾出一些空间。

将聊天保存在手机上是一个好主意,因为它可以节省用户的数据/带宽,而且他们可能会在离线时查看他们的消息。一个解决方案是使用SQL Lite,这是一个轻量级的库,它将位于您的应用程序中,充当一个数据库,您可以在其上执行查询,如果您熟悉RDBMS,那么实现它将没有问题。但是现在你必须找到一种很好的方法来管理将数据保存到REDIS/SQL-LITE/MongoDb。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37472240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档