聊天应用程序-向MongoDB发送多个同时请求

时间:2018-12-08 13:08:13

标签: javascript database mongodb rest chat

我正在构建一个聊天应用程序,并尝试找出最有效的方法来从MongoDB数据库中请求多个对话线程(私人和群组)。

我当前的想法是在客户端上遍历用户的联系人,并为每个联系人向我的REST API发送一个“ getConversation”请求。此操作之后发生,首先在服务器上检索了用户配置文件数据并将其发送给客户端,以便尽快填充某些聊天界面,尽管我不确定这是否是鉴于我正在提出的其他请求数量(一次轻松25到50),这是最佳选择。

我目前认为可以使用3种方法:

1。)向服务器发送用户数据请求>遍历服务器上的每个联系人(私有和组)>从数据库获取每个对话>将整个分发包发送回客户端并将数据分离到客户端相关的(Vue / Vuex)模块。请求总数:1 /请求的数据:大

2。)*我现在正在做什么:发送对用户数据的初始请求>在客户端上接收它>在客户端的联系人之间循环>为每个联系人发送单独的API请求>填充对话当他们回到客户身上时。请求总数:> 20 /请求的数据:小

3。)发送对用户数据的初始请求>接收它>为所有对话发送单个请求。我希望这比选择2花费的时间更长,但我可能是错的。请求总数:2 /请求的数据:中

我的目标是尽快+尽可能高效地检索用户数据和对话,因此,我欢迎您用于实现这种目标的任何建议或技术。

干杯:)

注意:

我正在使用Vue / Vuex / MongoDB / Express / SocketIO。

1 个答案:

答案 0 :(得分:1)

TL; DR ,我会选择第二个选项。

由于您希望应用程序尽快加载并响应,因此应避免请求大块数据,而这些数据甚至可能最终在应用程序中不使用。我会获取第一个(最新的)5-10个对话,因为这些对话很可能是用户希望首先阅读的对话。然后,如果用户想要阅读更多您尚未从服务器获取的对话,则可以获取这些对话(也许还可以获取当时的一些对话)。关于您对向服务器发送大量请求的担忧,应该不会比单个大请求慢很多,这会使应用程序更快且更灵活。

有关此主题的更多讨论,请查看this question