我正在寻找一个使用ejabbered
java客户端连接smack
的简单示例。这是我尝试过的东西
XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();
builder.setUsernameAndPassword("admin1@ejab", "123456");
builder.setServiceName("ejab");
builder.setHost("localhost");
builder.setPort(5280);
XMPPTCPConnectionConfiguration build = builder.build();
AbstractXMPPConnection conn1 = new XMPPTCPConnection(build);
conn1.connect();
我正在
org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 5000ms (~5s). Used filter: No filter used or filter was 'null'
我可以浏览http://localhost:5280/admin
。什么是servicename
& host
。任何人都可以给出一个简单的例子吗?
答案 0 :(得分:1)
根据smack API,setServiceName参数应该是XMPP服务的域,因此,在您的情况下,它应该是“ejab”(我想帐户“admin1 @ ejab”在ejabberd中正确设置)。您可以查看ejabberd.cfg文件中的Hostname部分。
e.g。来自默认的ejabberd.cfg文件
%%主机名
{hosts,[“localhost”]}。
==> localhost 设置为服务名称
setHost函数参数应该是服务器IP地址或DNS可解析服务器名称。根据您使用localhost访问ejabberd管理页面的描述,使用随ejabberd安装的计算机IP地址将更简单。
此外,setPort应该是ejabberd监听的端口,其默认值为5222而不是5280(5280用于通过Web管理)。您可以使用ejabberd.cfg文件中的侦听端口进行确认。
e.g。来自默认的ejabberd.cfg文件
{听,
[
{ 5222 ,ejabberd_c2s,[ .........
以下是添加自签名证书的步骤,以便smack可以使用。 (注意:我使用ubuntu服务器来安装openssl的以下命令。)
创建证书
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
openssl rsa -in privkey.pem -out privkey.pem
cat privkey.pem>> server.pem
openssl rsa -in server.pem -out newcert.pem
openssl x509 -in server.pem>> newcert.pem
sudo cp newcert.pem / etc / ejabberd /
修改ejabberd.cfg以使用证书
{5222,ejabberd_c2s,[
{access,c2s},
{shaper,c2s_shaper},
{max_stanza_size,65536},
starttls,{certfile,“ /etc/ejabberd/newcert.pem ”}
]},
{s2s_use_starttls,true}。
{s2s_certfile,“ /etc/ejabberd/newcert.pem ”}。
重启服务
sudo service ejabberd restart