基于Openfire消息服务器应用Smack发送即时消息源码示例
环境准备:1.安装openfire服务器,进行相关项配置
2.工程中引入smack*.jar包
源码如下:
[java]
package com.xjtu.jointframe.im.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.Connection;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.RosterEntry;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
/**
*
*
* <p>
* Description: 示例 业务类
* </p>
*
* <p>
* Copyright: Copyright (c) 2012
* </p>
*
*
* @author dml@2013-2-21
* @version 1.0
*/ www.zzzyk.com
public class IMServer {
private static final String IP = "127.0.0.1";
private static final Integer DK = 5222;
private static Roster roster;
/**
* 获取连接
*
* @return connection
*/
public static Connection getConnection() {
ConnectionConfiguration config = new ConnectionConfiguration(IP, DK);
Connection connection = new XMPPConnection(config);
return connection;
}
/**
* 发送通知消息
*
* @param username
* @param pass
* @param messgage
* @param groupName
* @throws XMPPException
*/
public void SendBCMsg(String username, String pass, String messgage,
String groupName) throws XMPPException {
Connection con = IMServer.getConnection();
con.connect();
con.login(username, pass);
Message m = new Message();
m.setBody(messgage);// 设置消息。
m.setTo(groupName + "@broadcast.xjtu");// [groupname]@[serviceName].[serverName]
con.sendPacket(m);
}
/**
* 发送即时消息
*
* @param username
* @param pass
* @param messgage
* @throws XMPPException
*/
public void SendMsg(String username, String pass, String messgage)
throws XMPPException {
Connection con = IMServer.getConnection();
con.connect();
con.login(username, pass);
Chat mychat = con.getChatManager().createChat("admin@xjtu", // 接收端的JID,JID是要加域的
new MessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
String messageBody = message.getBody();
System.out.println("收到信息:" + messageBody + " "
+ message.getFrom());
}
});
mychat.sendMessage(messgage); // 发送信息
con.disconnect(); // 断开连接
}
/**
* 获取好友列表
*
* @param username
* @param pass
* @return
* @throws XMPPException
*/
public List<RosterEntry> getRosterList(String username, String pass)
throws XMPPException {
Connection con = IMServer.getConnection();
con.connect();
con.login(username, pass);
Collection<RosterEntry> rosters = con.getRoster().getEntries();
for (RosterEntry rosterEntry : rosters) {
System.out.print("name: " + rosterEntry.getName() + ",jid: "
+ rosterEntry.getUser()); // 此处可获取用户JID
System.out.println("");
}
return null;
}
/**
* 获取用户列表(含组信息)
*
* @param username
* @param pass
* @return
* @throws XMPPException
*/
public List<RosterEntry> getRoster(String username, String pass)
throws XMPPException { &
补充:软件开发 , Java ,
- 更多JAVA疑问解答:
- java怎么在线读取ftp服务器上的文件内容
- 关于程序员的职业规划
- HTML和JSP矛盾吗?
- java小程序如何打包?
- java怎么split路径文件名?
- 关于Hibernate实体自身多对一的抓取问题
- 关于apache2+tomcat群集出现的问题
- SSH 导入导出excel 谁有这块的资料吗?
- springmvc 加载一个jsp页面执行多个方法 报404
- 关于用jquery 导入 excel
- java对时间进行循环放到List中
- 一个图片的输入输出程序,第一次调用某方法会中断,第二次调用则正常
- 请上过传智播客的人说一下传智播客怎么样呀!是不是像它说的那样好呀!
- spring的schema怎么配置
- 【菜鸟求助】SSH中怎么从JSP页面往后台传值呢