我正在开发像whatsapp这样的项目,并使用ejabberd作为Android / IOS客户端的后端服务器。我想做一些类似步骤的whatsapp- 1.客户端向服务器发送手机号码。 2.服务器发送OTP以返回客户端并启动计时器说2分钟。 3.如果客户端在指定的时间内从服务器发送到服务器的正确OTP。客户将被注册。
我需要帮助,我应该在哪个ejabberd模块中编写上述步骤的代码。我知道,要修改Ejabberd我可以使用Hooks和IQ处理程序,但是一旦用户注册就可以使用它们。正确?
我应该使用其他语言服务器,仅用于上述步骤吗?请帮忙。
答案 0 :(得分:1)
您应该编写新的ejabberd模块,在特定端口上启动新的SSL服务器。对此进行身份验证。
如果您熟悉ejabberd的核心,可以在配置的listen
部分添加自己的模块,并将新模块写为服务器的后端(与编写ejabberd_c2s
的{ejabberd本身相同,{{ 1}}等。)
我刚读了它的代码,我也建议你阅读代码
例如,在ejabberd版本17.01 here中读取config并为ejabberd_service
密钥的每个部分运行tcp服务器。每个部分都有Port,Module和Opts三部分。对于ejabberd的xmpp客户端,这些是5222,listen
,而Opts是其他值。在here中为每个已接受的连接调用ejabberd_c2s
。在ejabberd_socket:start(Module, gen_tcp, Sock, Opts)
here中启动一个进程说A用于从套接字接收并解析XML并将它们发送到另一个进程,说B和here从ejabberd_socket:start/4
启动进程(B)。进程B从进程A接收XML,并在ejabberd中执行XMPP客户端之外的所有操作。
答案 1 :(得分:1)
我认为你应该创造一个宁静的服务来做到这一点。
请考虑以下步骤:
ejabberd_auth_jwt
模块进行身份验证。这可能符合您的要求。