1.下载OpenFire服务器,进行安装,参考http://www.cnblogs.com/hoojo/archive/2012/05/17/2506769.html

2.程序运行客户端:下载客户端代码并进行配置 选中项目-->点击“run configurations”进行配置,如下图所示:

  Main Class:org.jivesoftware.launcher.Startup;

  VM arguments:-Djava.library.path="${workspace_loc:spark}/target/build/lib/windows"

点击“run spark”,显示如下图:

3.在程序中添加调用:

  1. package com.rixin.spark;
  2.  
  3. import org.jivesoftware.smack.Chat;
  4. import org.jivesoftware.smack.Connection;
  5. import org.jivesoftware.smack.ConnectionConfiguration;
  6. import org.jivesoftware.smack.MessageListener;
  7. import org.jivesoftware.smack.XMPPConnection;
  8. import org.jivesoftware.smack.XMPPException;
  9. import org.jivesoftware.smack.packet.Message;
  10. import org.jivesoftware.smack.packet.Message.Type;
  11. import org.jivesoftware.smack.packet.Presence;
  12. import org.jivesoftware.smack.packet.Session;
  13.  
  14. import com.rixin.user.model.User;
  15.  
  16. /**
  17. * <b>function:</b> 利用Smack框架完成 XMPP 协议通信
  18. *
  19. * @author hoojo
  20. * @createDate 2012-5-22 上午10:28:18
  21. * @file ConnectionServerTest.java
  22. * @package com.hoo.smack.conn
  23. * @project jwchat
  24. * @blog http://blog.csdn.net/IBM_hoojo
  25. * @email hoojo_@126.com
  26. * @version 1.0
  27. */
  28. public class SmackXMPP {
  29.  
  30. private Connection connection;
  31. private ConnectionConfiguration config;
  32. /** openfire服务器address */
  33. private final static String server = "192.168.1.230";
  34.  
  35. private final void fail(Object o) {
  36. if (o != null) {
  37. System.out.println(o);
  38. }
  39. }
  40.  
  41. private final void fail(Object o, Object... args) {
  42. if (o != null && args != null && args.length > 0) {
  43. String s = o.toString();
  44. for (int i = 0; i < args.length; i++) {
  45. String item = args[i] == null ? "" : args[i].toString();
  46. if (s.contains("{" + i + "}")) {
  47. s = s.replace("{" + i + "}", item);
  48. } else {
  49. s += " " + item;
  50. }
  51. }
  52. System.out.println(s);
  53. }
  54. }
  55.  
  56. /**
  57. * <b>function:</b> 初始Smack对openfire服务器链接的基本配置
  58. *
  59. * @author hoojo
  60. * @createDate 2012-6-25 下午04:06:42
  61. */
  62. public void init() {
  63. try {
  64. // connection = new XMPPConnection(server);
  65. // connection.connect();
  66. /**
  67. * 9090是openfire服务器默认的通信端口,你可以登录http://192.168.1.230:9090/
  68. * 到管理员控制台查看客户端到服务器端口
  69. */
  70. config = new ConnectionConfiguration(server, 5222);
  71.  
  72. /** 是否启用压缩 */
  73. config.setCompressionEnabled(true);
  74. /** 是否启用安全验证 */
  75. config.setSASLAuthenticationEnabled(true);
  76. /** 是否启用调试 */
  77. config.setDebuggerEnabled(false);
  78. // config.setReconnectionAllowed(true);
  79. // config.setRosterLoadedAtLogin(true);
  80.  
  81. /** 创建connection链接 */
  82. connection = new XMPPConnection(config);
  83. /** 建立连接 */
  84. connection.connect();
  85. } catch (XMPPException e) {
  86. e.printStackTrace();
  87. }
  88. fail(connection);
  89. fail(connection.getConnectionID());
  90. }
  91.  
  92. public void destory() {
  93. if (connection != null) {
  94. connection.disconnect();
  95. connection = null;
  96. }
  97. }
  98.  
  99. public static void main(String[] args) {
  100. SmackXMPP smack = new SmackXMPP();
  101. User fromUser = new User();
  102. fromUser.setUsername("wd");
  103. fromUser.setPassword("123");
  104. smack.sendMsg(fromUser, "lhc", "你有一个待办,请办理。类型:请假。http://www.oa.rixin/jingjia");
  105. }
  106.  
  107. /**
  108. * 发送即时通讯信息
  109. *
  110. * @param fromUser
  111. * 发送人对象
  112. * @param toUserName
  113. * 接收人用户名
  114. * @param msg
  115. * 发送内容
  116. */
  117. public void sendMsg(User fromUser, String toUserName, String msg) {
  118. init();
  119. try {
  120. connection.login(fromUser.getUsername(), fromUser.getPassword());
  121. } catch (XMPPException e) {
  122. e.printStackTrace();
  123. }
  124.  
  125. /**
  126. * 向jojo@192.168.1.230 发送聊天消息,此时你需要用Spark软件登陆jojo这个用户,
  127. * 这样代码就可以向jojo这个用户发送聊天消息,Spark登陆的jojo用户就可以接收到消息
  128. **/
  129. /** Type.chat 表示聊天,groupchat多人聊天,error错误,headline在线用户; */
  130. Message message = new Message(toUserName + "@" + server, Type.chat);
  131. // Message message = new Message(sessid, Type.chat);
  132. message.setBody(msg);
  133. connection.sendPacket(message);
  134. try {
  135. Thread.sleep(1);
  136. } catch (InterruptedException e) {
  137. e.printStackTrace();
  138. }
  139. destory();
  140. }
  141.  
  142. /**
  143. * <b>function:</b> 消息监听器,用户监听对方发送的消息,也可以想对方发送消息
  144. *
  145. * @author hoojo
  146. * @createDate 2012-6-25 下午05:05:31
  147. * @file SmackXMPPTest.java
  148. * @package com.hoo.smack
  149. * @project jwchat
  150. * @blog http://blog.csdn.net/IBM_hoojo
  151. * @email hoojo_@126.com
  152. * @version 1.0
  153. */
  154. class MyMessageListeners implements MessageListener {
  155. public void processMessage(Chat chat, Message message) {
  156. try {
  157. /** 发送消息 */
  158. chat.sendMessage("dingding……" + message.getBody());
  159. } catch (XMPPException e) {
  160. e.printStackTrace();
  161. }
  162. /** 接收消息 */
  163. fail("From: {0}, To: {1}, Type: {2}, Sub: {3}", message.getFrom(),
  164. message.getTo(), message.getType(), message.toXML());
  165. /*
  166. * Collection<Body> bodys = message.getBodies(); for (Body body :
  167. * bodys) { fail("bodies[{0}]", body.getMessage()); }
  168. * //fail(message.getLanguage()); //fail(message.getThread());
  169. * //fail(message.getXmlns());
  170. */
  171. fail("body: ", message.getBody());
  172. }
  173. }
  174. }

运行可以发送系统消息。

spark结合 Openfire服务器,发送聊天消息的更多相关文章

  1. Smack 结合 Openfire服务器,建立IM通信,发送聊天消息

    在文章开始,请你了解和熟悉openfire方面的相关知识,这样对你理解下面代码以及下面代码的用途有很好的了解.同时,你可能需要安装一个简单的CS聊天工具,来测试你的代码是否成功的在openfire服务 ...

  2. 基于XMPP协议(openfire服务器)的消息推送实现

    转自:http://blog.csdn.net/nomousewch/article/details/8088277 最近好像有不少朋友关注Android客户端消息推送的实现,我在之前的项目中用到过J ...

  3. JAVA微信公众号网页开发 —— 接收微信服务器发送的消息

    WeixinMessage.java package com.test; import java.io.Serializable; /** * This is an object that conta ...

  4. 即时通信系统中如何实现:聊天消息加密,让通信更安全? 【低调赠送:QQ高仿版GG 4.5 最新源码】

    加密重要的通信消息,是一个常见的需求.在一些政府部门的即时通信软件中(如税务系统),对聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新的GG 4.5中,增加了对聊天消息 ...

  5. 即时通信系统中实现聊天消息加密,让通信更安全【低调赠送:C#开源即时通讯系统(支持广域网)——GGTalk4.5 最新源码】

    在即时通讯系统(IM)中,加密重要的通信消息,是一个常见的需求.尤其在一些政府部门的即时通信软件中(如税务系统),对即时聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新 ...

  6. 七、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-聊天消息项的实现

    会话好友列表的实现 1.项目引言 2.腾讯云后台配置TXIM 3.配置项目并实现IM登录 4.会话好友列表的实现 5.聊天输入框的实现 6.聊天界面容器的实现 7.聊天消息项的实现 8.聊天输入框扩展 ...

  7. openfire聊天消息记录插件关键代码

    package com.sqj.openfire.chat.logs; import java.io.File; import java.util.Date; import java.util.Lis ...

  8. Openfire服务器和Spark客户端配置

    一.Openfire服务器的配置 关于之前一直在进行的聊天app的项目,我们还没有完成,这次我们介绍一下,Openfire服务器的配置. 1.Openfire下载 Openfire下载地址:http: ...

  9. openfire服务器+Spark搭建即时聊天系统 & 阿里云的初步探索

    晚上出去和洋仔吃了涮肉,喝了点啤酒,不知不觉就聊到了11点,感觉他工作状态还不错,emmm...都要加油吧.虽然没有当时去山西零下二十多度那么夸张,这几天北京的冬夜还是有点小冷的.好了进入正题: 一. ...

随机推荐

  1. UVa 10652 (简单凸包) Board Wrapping

    题意: 有n块互不重叠的矩形木板,用尽量小的凸多边形将它们包起来,并输出并输出木板总面积占凸多边形面积的百分比. 分析: 几乎是凸包和多边形面积的裸题. 注意:最后输出的百分号前面有个空格,第一次交P ...

  2. bzoj1797: [Ahoi2009]Mincut 最小割

    最大流+tarjan.然后因为原来那样写如果图不连通的话就会出错,WA了很久. jcvb: 在残余网络上跑tarjan求出所有SCC,记id[u]为点u所在SCC的编号.显然有id[s]!=id[t] ...

  3. Jqgrid入门-Jqgrid列数据拖动(七)

    上一章提到在Jqgrid中如何设置二级表头,这一章节主要探讨Jqgrid表格里面的数据如果实现拖动功能,比如你想把第一行的数据拖到当前页的最后一行,或者其他位置.     Jqgrid表格插件自己没有 ...

  4. 简单分析什么是SQL注入漏洞

    现在很多人在入侵的过程中基本都是通过SQL注入来完成的,但是有多少人知道为什么会有这样的注入漏洞呢?有的会随口说着对于字符的过滤不严造成的.但是事实是这样吗?我们学这些,不仅要知其然,更要知其所以然! ...

  5. HDU 3749 Financial Crisis 经济危机(点双连通分量)

    题意: 给一个图n个点m条边(不一定连通),接下来又q个询问,询问两个点是为“不相连”,“仅有一条路径可达”,“有两条及以上的不同路径可达”三种情况中的哪一种.注:两条以上的路径指的是路径上的点连1个 ...

  6. POJ 1208 The Blocks Problem

    The Blocks Problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5397   Accepted: 231 ...

  7. webdriver(python)学习笔记二

    自己开始一个脚本开始学习: # coding = utf-8 from selenium import webdriver browser = webdriver.Firefox() browser. ...

  8. HDU 5278 PowMod 数论公式推导

    题意:中文题自己看吧 分析:这题分两步 第一步:利用已知公式求出k: 第二步:求出k然后使用欧拉降幂公式即可,欧拉降幂公式不需要互质(第二步就是BZOJ3884原题了) 求k的话就需要构造了(引入官方 ...

  9. 在word中显示漂亮的代码

    在word中粘贴或写代码时,通常得不到想要的格式,可用‘Notepad++’工具实现. 步骤: (1)安装Notepad++软件,把代码粘贴进去,选择菜单栏中的语言,然后选择相应代码语言,如P-> ...

  10. Unicode转为UTF8

    Unicode转换为UTF8 要说这个转换也简单,使用WideCharToMultiByte两次或者直接一次就可以转换. 今天在弄VLC的时候,由于VLC的视频文件名使用UTF8编码,因此当路径中包含 ...