openfire版本为 4.1.3
关于openfire的配置网上有很多资料,可以找一个配置一下。
这里遇到的问题是,我在配置的时候把端口号从9090,9091改为了19090,19091,导致配置完成的时候无法打开管理控制台,这里需要重启一下电脑
2.smack
smack的版本为4.2.0
网上看到的建立链接的方式有下面两种
一
XMPPConnection connection = new XMPPConnection("wang-think");
二
ConnectionConfiguration config = new ConnectionConfiguration("127.0.0.1", 5222);
XMPPConnection connection = new XMPPConnection(config);
但在4.2上无法使用。
通过看API和查阅一些错误,实现的是
Builder config = XMPPTCPConnectionConfiguration.builder();
config.setHost("127.0.0.1");
config.setPort(5222);
DomainBareJid serviceName = JidCreate.domainBareFrom("bbb") ; //服务器名
config.setServiceName(serviceName);
config.setHostAddress(InetAddress.getByName("bbb")); //服务器名
config.setUsernameAndPassword("test1", "111111");
config.setResource("resource");
config.setSecurityMode(XMPPTCPConnectionConfiguration.SecurityMode.disabled);
XMPPTCPConnection xmppCon = new XMPPTCPConnection(config.build());
xmppCon.connect();
xmppCon.login();
上面的代码可以实现登陆
关于发送消息
EntityBareJid jid = JidCreate.entityBareFrom("aaa@bbb"); //需要链接的用户名@服务器名
Chat chat = chatManager.createChat(jid);
chat.getThreadID();
chat.sendMessage("test");
关于接收消息
添加一个监听
ChatManager chatManager = ChatManager.getInstanceFor(xmppCon);
ChatManagerListener chatManagerListener = new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean createdLocally) {
chat.addMessageListener(new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
if(message.getBody()!=null)
{
System.out.println(message.getBody());
}
}
});
}
};
chatManager.addChatListener(chatManagerListener);
如果写demo的话,注意后面加一个循环,避免程序结束,无法接收消息
while (true) {
Thread.sleep(50);
}
关于测试的话,可以用spark,比较方便。