将IM聊天服务器集成到现有的Spring服务器
我试图将openFire XMPP服务器集成到我当前的公司Spring服务器,但有两个主要问题我找不到答案 -
我将首先从我目前的架构开始 -
1. xmpp服务器有一个自己的DB服务器,它是从Spring服务器DB中分离出来的,这是一个专用的机器来保存用户的字符历史记录等
2.弹簧服务器有一个自己的数据库,用于保存用户凭据(md5加密)以及客户端应用程序数据
3. Spring服务器专门用于服务HTTP请求(一个专用的REST服务器)
总而言之,我有两台DB服务器,一台是聊天服务器,一台是Rest服务器
现在针对这些问题 -
1.我可以禁止注册到xmpp服务器(例如,将其他服务器ip白名单,并让它成为用户注册后唯一可以创建用户的人)?
2.出于安全原因,Rest服务器每隔2天为登录用户切换会话,iOS和Android客户端在本地处理会话管理 - 如何将这些会话用于XMPP服务器?
澄清 - 我希望用户能够使用xmpp服务器仅用于聊天目的,但只有在用户会话可能过期后才登录到应用程序本身,聊天客户端还必须对REST服务器重新进行身份验证,我可以做到这一点吗?
3.它不会在REST服务器上造成过载吗? (即Rest服务器现在必须处理客户端请求以及XMPP服务器请求)
4.实现这种系统的最佳体系结构(聊天服务器,聊天服务器,休息服务器,休息服务器的数据库服务器),以便系统可以水平扩展?
我在谷歌搜索一篇文章或一些相关的描述一般架构,但无法找到任何相关的,因为我不是“发明轮子”在这里我很想听到一个好建议或被引导到一篇文章,解释怎么对的
提前致谢。
XMPP世界中用于用户认证的标准方式是SASL。
SASL有一个非常简单的模型:服务器向客户端发送一些“挑战”字符串给客户端,客户端向服务器发送“响应”字符串,并且直到服务器决定客户端发送所有需要的数据为止。 在SASL“机制”中定义了要发送的数据。 有许多着名的SASL机制,例如SCRAM,它们由大多数XMPP服务器和客户端“开箱即用”提供。
您的问题是 - 您已经拥有身份验证系统和用户数据库,并且希望将其用于聊天目的。 有两种方法:
您按顺序提问:
是的,您可以禁用XMPP客户端的注册并将用户指向注册网站。
您将在Openfire管理控制台中看到聊天会话,并可以阻止它们,也可以按照您的日程安排为此编写一个模块
如果您要编写SASL REST机制,那么来自REST后端的聊天客户端和Web客户端的请求之间没有任何区别,它们看起来是一样的。
正如我先介绍的那样,您不需要为聊天服务器分开数据库,并且可以设置连接到您的REST后端的多个聊天服务器。