我有一个ejabberd服务器,我正在尝试在我的Angular / NodeJS应用程序中构建一个聊天模块。
Currenlty,我的Angular
应用程序直接连接到聊天服务器。假设我的roster
有100个联系人,包括online
和offline
联系人。我需要将所有100个联系人映射到我的应用程序服务器中的用户,以获取更多详细信息,如companyId
,email
,contact
等。
我是否必须遍历每个联系人并将API调用到应用程序服务器?这不会给前端带来很大的负担吗?有没有更好的方法来实现这一目标?
如果我的问题很愚蠢,请道歉。我是XMPP
的新手。
有几种方法可以做到这一点。
您可以从API中获取每个用户,对其进行缓存,以便下次您不必获取所有数据,但这不是最佳解决方案。
另一个解决方案是通过将所有id传递给您的节点应用程序来使所有联系人只需一次调用。然后,节点应用程序可以从您的数据库中获取所有需要的数据,并使用一个请求而不是100来传回。
或多或少相同的问题,我使用jabber搜索来获取所有用户并存储在客户端上用于整个会话。
我的回复是“所有用户都可以与所有其他用户聊天”(服务器上约100个用户),
如果您不是,我建议您创建一个自定义IQ并让服务器缓存Jabber搜索(在每次用户注册后更新)并在一次调用async中仅回复所需的数据。