如何将 Ejabberd 或 MongooseIM 与 Node.js(或 Django)连接

How to connect Ejabberd or MongooseIM with Node.js (or Django)

我想使用 node.js(或 Django)和 Ejabberd 或 MongooseIM 为聊天应用程序开发后端服务器。并在应该具有推送通知的 React Native 应用程序上使用此 API。

我的想法是通过我自己的服务器管理用户配置文件和元数据以及身份验证(OAuth 2.0 - 社交登录),然后让 Ejabberd 或 MongooseIM 服务器管理聊天内容。

问题在于如何在服务器之间建立连接。我想通过我的服务器登录并且不让用户知道现有的 Ejabberd 或 MongooseIM 服务器。

知道如何在服务器之间建立连接吗?

The problems come on how to make the connection between the servers. I want to login through my server and don't make the user aware of the existing Ejabberd server.

我觉得这个方法不对

以下是我的看法以及我如何在一些项目中实施它:

1) 用户通过应用服务器 REST API 登录并获得一些 会话令牌 或类似的东西 user_id

2) 然后该用户使用此 user_id 为 ejabberd 构建 JID,例如@yourejabberdserver.com

3) 然后这个用户使用这个 JID 和会话令牌作为密码并连接到 Ejabberd。

4) 在这种情况下,Ejabberd 会验证会话令牌(它会转到您的 App Server 数据库并进行验证,或者如果您使用 JWT 令牌,那么它只会验证它)。在 Ejabberd 中,您可以通过实施外部脚本 auth:

这种方法使您免于进行第二次帐户注册(在 Ejabberd 端),因此您可以在两个应用程序(服务器应用程序和 Ejabberd)中使用相同的用户凭据