You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Windows中的Erlang连接至Ubuntu中的Ejabberd?

解决Ubuntu Ejabberd与Windows Erlang连接及Exmpp包问题

一、搞定Windows Erlang环境的Exmpp依赖

Windows下没有现成的Exmpp预编译包,得自己编译或用rebar3管理依赖:

  • 先确保Windows环境装了Erlang/OTP(版本建议和Ejabberd使用的Erlang版本尽量接近,避免兼容性问题)、Git和编译工具(比如MinGW或MSVC)
  • 用rebar3创建Erlang项目,在rebar.config里添加Exmpp依赖:
    {deps, [
        {exmpp, {git, "https://github.com/processone/exmpp.git", {tag, "1.1.0"}}}
    ]}.
    
  • 打开命令行进入项目目录,执行rebar3 get-deps拉取依赖,再执行rebar3 compile编译Exmpp
  • 如果编译报错,检查编译工具是否配置正确,比如MinGW的路径要加到系统环境变量里

二、连接Ejabberd的步骤(基于Exmpp)

  1. 初始化Exmpp:在Erlang代码里先初始化Exmpp库
    application:ensure_all_started(exmpp),
    {ok, Session} = exmpp_session:start(),
    
  2. 创建JID和认证:用Ejabberd上已注册的账号(比如testuser@your-ejabberd-domain)创建JID,设置认证信息
    JID = exmpp_jid:make("testuser", "your-ejabberd-ip-or-domain", "windows-client"),
    exmpp_session:auth(Session, JID, "your-password"),
    
  3. 连接服务器:指定Ejabberd的IP和默认XMPP端口5222,发起连接
    {ok, _StreamId} = exmpp_session:connect_TCP(Session, "your-ejabberd-ip", 5222),
    
  4. 绑定资源并开启会话:连接成功后绑定客户端资源,开启会话
    exmpp_session:bind(Session, exmpp_jid:resource(JID)),
    exmpp_session:session(Session),
    
  5. 测试发送消息:发一条消息验证连接是否正常
    Message = exmpp_message:normal("Hello from Windows Erlang client!"),
    exmpp_session:send_packet(Session, exmpp_stanza:set_recipient(Message, exmpp_jid:make("anotheruser@your-ejabberd-domain"))),
    
  6. 处理接收的消息:注册回调函数处理服务器推送的消息
    exmpp_session:register_callback(Session, message, fun handle_message/3),
    
    回调函数示例:
    handle_message(_Session, _MessageId, Message) ->
        io:format("Received message: ~p~n", [exmpp_message:get_body(Message)]).
    

注意事项

  • 确保Ubuntu的Ejabberd允许外部连接:检查ejabberd.yml里的listen配置,5222端口要绑定到0.0.0.0而非127.0.0.1
  • 关闭Ubuntu防火墙或开放5222端口,避免Windows客户端无法连接
  • 如果用TLS加密连接,把连接方式改成connect_TLS,端口用5223,同时确保Ejabberd配置了TLS证书

内容的提问来源于stack exchange,提问作者Mohammed Rifaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:37:08