java xmpp 收发消息_XMPP Smack Openfire(四)单人聊天和多人聊天(发送消息、接收消息)...

很久没有写博客了,回顾了一下原先学习的,接着没有写完的继续写咯。(ps:告诉大家一个秘密,其实写写博客对自己的帮助是非常大的哦~)

好了废话不多说,进入主题吧。

一、单人聊天

1)发送消息:

首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFriendChat()获取

privateMapchatManage =newHashMap();// 聊天窗口管理map集合

/**

* 获取或创建聊天窗口

* @param friend 好友名

* @param listenter 聊天監聽器

* @return

*/

publicChat getFriendChat(String friend, MessageListener listenter) {

if(getConnection()==null)

returnnull;

/** 判断是否创建聊天窗口 */

for(String fristr : chatManage.keySet()) {

if(fristr.equals(friend)) {

// 存在聊天窗口,则返回对应聊天窗口

returnchatManage.get(fristr);

}

}

/** 创建聊天窗口 */

Chat chat = getConnection().getChatManager().createChat(friend + "@"+

getConnection().getServiceName(), listenter);

/** 添加聊天窗口到chatManage */

chatManage.put(friend, chat);

returnchat;

}

friend为好友名,不是JID;listener 监听器可以传null,利用聊天窗口对象调用sendMessage发送消息

这里sendMessage我传的是一个JSON字符串,以便更灵活的控制,发送消息完成,很简单吧~

Chat chat = getFriendChat(friend,null);

try{

String msgjson = "{\"messageType\":\""+messageType+"\",\"chanId\":\""+chanId+"\",\"chanName\":\""+chanName+"\"}";

chat.sendMessage(msgjson);

} catch(XMPPException e) {

e.printStackTrace();

}

2)接受消息:

创建一个消息监听器&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现消息接收,需要使用Openfire提供的XMPP协议和Smack API。 首先,需要在代码中创建一个XMPP连接,连接到Openfire服务器。可以使用Smack API提供的XMPPTCPConnection类来创建连接,并传入Openfire服务器的IP地址、端口号和用户名密码等信息。 ```java XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder() .setServiceName(serverName) .setHost(serverIP) .setPort(serverPort) .setUsernameAndPassword(username, password) .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) .setCompressionEnabled(false); AbstractXMPPConnection connection = new XMPPTCPConnection(configBuilder.build()); ``` 然后,需要注册一个消息监听器,以便在收到消息时进行处理。可以使用Smack API提供的StanzaListener接口来实现监听器。 ```java connection.addAsyncStanzaListener(new StanzaListener() { @Override public void processStanza(Stanza stanza) throws SmackException.NotConnectedException, InterruptedException { if (stanza instanceof Message) { Message message = (Message) stanza; String fromUser = message.getFrom().toString(); String messageBody = message.getBody(); // 处理收到的消息 } } }, new StanzaFilter() { @Override public boolean accept(Stanza stanza) { return stanza instanceof Message; } }); ``` 最后,需要调用连接对象的connect()方法和login()方法,建立连接并登录到Openfire服务器。 ```java connection.connect(); connection.login(); ``` 这样,当有消息发送到当前用户时,就会触发消息监听器的processStanza()方法,从而实现消息接收

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值