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

标签 node.js django xmpp ejabberd mongoose-im

我想使用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 登录并获取一些 session token 或类似的内容以及user_id

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

3) 然后该用户使用此 JID 和 session token 作为密码并连接到 Ejabberd。

4) 在这种情况下,Ejabberd 会验证 session token (它会转到您的应用程序服务器数据库并进行验证,或者如果您使用 JWT token ,那么它只会验证它)。在 Ejabberd 中,您可以通过实现外部脚本身份验证来做到这一点:

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

关于node.js - 如何将 Ejabberd 或 MongooseIM 与 Node.js(或 Django)连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52224543/

相关文章:

python - Django 休息框架在不同文件上记录不同级别

emacs - 如何让 jabber.el 不显示用户图标?

html - 来自 Jade 的 sendFile ('/index.html' ) 和 render ('index' ) 之间的区别

node.js - 高内存/性能关键计算-体系结构方法意见

Django,检索 IP 位置

python - 无法启动新的 Django 项目

ruby - 有没有可以更改 google-talk 状态的 API?

python - 断言错误: No api proxy found for service "xmpp"

mysql - 如何使用 Node.js 在 mysql 上执行 CURD

javascript - AWS S3 CreateReadStream在循环中仅读取和写入1个文件