spark结合 Openfire服务器,发送聊天消息
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.在程序中添加调用:
- package com.rixin.spark;
- import org.jivesoftware.smack.Chat;
- import org.jivesoftware.smack.Connection;
- import org.jivesoftware.smack.ConnectionConfiguration;
- import org.jivesoftware.smack.MessageListener;
- import org.jivesoftware.smack.XMPPConnection;
- import org.jivesoftware.smack.XMPPException;
- import org.jivesoftware.smack.packet.Message;
- import org.jivesoftware.smack.packet.Message.Type;
- import org.jivesoftware.smack.packet.Presence;
- import org.jivesoftware.smack.packet.Session;
- import com.rixin.user.model.User;
- /**
- * <b>function:</b> 利用Smack框架完成 XMPP 协议通信
- *
- * @author hoojo
- * @createDate 2012-5-22 上午10:28:18
- * @file ConnectionServerTest.java
- * @package com.hoo.smack.conn
- * @project jwchat
- * @blog http://blog.csdn.net/IBM_hoojo
- * @email hoojo_@126.com
- * @version 1.0
- */
- public class SmackXMPP {
- private Connection connection;
- private ConnectionConfiguration config;
- /** openfire服务器address */
- private final static String server = "192.168.1.230";
- private final void fail(Object o) {
- if (o != null) {
- System.out.println(o);
- }
- }
- private final void fail(Object o, Object... args) {
- if (o != null && args != null && args.length > 0) {
- String s = o.toString();
- for (int i = 0; i < args.length; i++) {
- String item = args[i] == null ? "" : args[i].toString();
- if (s.contains("{" + i + "}")) {
- s = s.replace("{" + i + "}", item);
- } else {
- s += " " + item;
- }
- }
- System.out.println(s);
- }
- }
- /**
- * <b>function:</b> 初始Smack对openfire服务器链接的基本配置
- *
- * @author hoojo
- * @createDate 2012-6-25 下午04:06:42
- */
- public void init() {
- try {
- // connection = new XMPPConnection(server);
- // connection.connect();
- /**
- * 9090是openfire服务器默认的通信端口,你可以登录http://192.168.1.230:9090/
- * 到管理员控制台查看客户端到服务器端口
- */
- config = new ConnectionConfiguration(server, 5222);
- /** 是否启用压缩 */
- config.setCompressionEnabled(true);
- /** 是否启用安全验证 */
- config.setSASLAuthenticationEnabled(true);
- /** 是否启用调试 */
- config.setDebuggerEnabled(false);
- // config.setReconnectionAllowed(true);
- // config.setRosterLoadedAtLogin(true);
- /** 创建connection链接 */
- connection = new XMPPConnection(config);
- /** 建立连接 */
- connection.connect();
- } catch (XMPPException e) {
- e.printStackTrace();
- }
- fail(connection);
- fail(connection.getConnectionID());
- }
- public void destory() {
- if (connection != null) {
- connection.disconnect();
- connection = null;
- }
- }
- public static void main(String[] args) {
- SmackXMPP smack = new SmackXMPP();
- User fromUser = new User();
- fromUser.setUsername("wd");
- fromUser.setPassword("123");
- smack.sendMsg(fromUser, "lhc", "你有一个待办,请办理。类型:请假。http://www.oa.rixin/jingjia");
- }
- /**
- * 发送即时通讯信息
- *
- * @param fromUser
- * 发送人对象
- * @param toUserName
- * 接收人用户名
- * @param msg
- * 发送内容
- */
- public void sendMsg(User fromUser, String toUserName, String msg) {
- init();
- try {
- connection.login(fromUser.getUsername(), fromUser.getPassword());
- } catch (XMPPException e) {
- e.printStackTrace();
- }
- /**
- * 向jojo@192.168.1.230 发送聊天消息,此时你需要用Spark软件登陆jojo这个用户,
- * 这样代码就可以向jojo这个用户发送聊天消息,Spark登陆的jojo用户就可以接收到消息
- **/
- /** Type.chat 表示聊天,groupchat多人聊天,error错误,headline在线用户; */
- Message message = new Message(toUserName + "@" + server, Type.chat);
- // Message message = new Message(sessid, Type.chat);
- message.setBody(msg);
- connection.sendPacket(message);
- try {
- Thread.sleep(1);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- destory();
- }
- /**
- * <b>function:</b> 消息监听器,用户监听对方发送的消息,也可以想对方发送消息
- *
- * @author hoojo
- * @createDate 2012-6-25 下午05:05:31
- * @file SmackXMPPTest.java
- * @package com.hoo.smack
- * @project jwchat
- * @blog http://blog.csdn.net/IBM_hoojo
- * @email hoojo_@126.com
- * @version 1.0
- */
- class MyMessageListeners implements MessageListener {
- public void processMessage(Chat chat, Message message) {
- try {
- /** 发送消息 */
- chat.sendMessage("dingding……" + message.getBody());
- } catch (XMPPException e) {
- e.printStackTrace();
- }
- /** 接收消息 */
- fail("From: {0}, To: {1}, Type: {2}, Sub: {3}", message.getFrom(),
- message.getTo(), message.getType(), message.toXML());
- /*
- * Collection<Body> bodys = message.getBodies(); for (Body body :
- * bodys) { fail("bodies[{0}]", body.getMessage()); }
- * //fail(message.getLanguage()); //fail(message.getThread());
- * //fail(message.getXmlns());
- */
- fail("body: ", message.getBody());
- }
- }
- }
运行可以发送系统消息。
spark结合 Openfire服务器,发送聊天消息的更多相关文章
- Smack 结合 Openfire服务器,建立IM通信,发送聊天消息
在文章开始,请你了解和熟悉openfire方面的相关知识,这样对你理解下面代码以及下面代码的用途有很好的了解.同时,你可能需要安装一个简单的CS聊天工具,来测试你的代码是否成功的在openfire服务 ...
- 基于XMPP协议(openfire服务器)的消息推送实现
转自:http://blog.csdn.net/nomousewch/article/details/8088277 最近好像有不少朋友关注Android客户端消息推送的实现,我在之前的项目中用到过J ...
- JAVA微信公众号网页开发 —— 接收微信服务器发送的消息
WeixinMessage.java package com.test; import java.io.Serializable; /** * This is an object that conta ...
- 即时通信系统中如何实现:聊天消息加密,让通信更安全? 【低调赠送:QQ高仿版GG 4.5 最新源码】
加密重要的通信消息,是一个常见的需求.在一些政府部门的即时通信软件中(如税务系统),对聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新的GG 4.5中,增加了对聊天消息 ...
- 即时通信系统中实现聊天消息加密,让通信更安全【低调赠送:C#开源即时通讯系统(支持广域网)——GGTalk4.5 最新源码】
在即时通讯系统(IM)中,加密重要的通信消息,是一个常见的需求.尤其在一些政府部门的即时通信软件中(如税务系统),对即时聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新 ...
- 七、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-聊天消息项的实现
会话好友列表的实现 1.项目引言 2.腾讯云后台配置TXIM 3.配置项目并实现IM登录 4.会话好友列表的实现 5.聊天输入框的实现 6.聊天界面容器的实现 7.聊天消息项的实现 8.聊天输入框扩展 ...
- openfire聊天消息记录插件关键代码
package com.sqj.openfire.chat.logs; import java.io.File; import java.util.Date; import java.util.Lis ...
- Openfire服务器和Spark客户端配置
一.Openfire服务器的配置 关于之前一直在进行的聊天app的项目,我们还没有完成,这次我们介绍一下,Openfire服务器的配置. 1.Openfire下载 Openfire下载地址:http: ...
- openfire服务器+Spark搭建即时聊天系统 & 阿里云的初步探索
晚上出去和洋仔吃了涮肉,喝了点啤酒,不知不觉就聊到了11点,感觉他工作状态还不错,emmm...都要加油吧.虽然没有当时去山西零下二十多度那么夸张,这几天北京的冬夜还是有点小冷的.好了进入正题: 一. ...
随机推荐
- UVa 10652 (简单凸包) Board Wrapping
题意: 有n块互不重叠的矩形木板,用尽量小的凸多边形将它们包起来,并输出并输出木板总面积占凸多边形面积的百分比. 分析: 几乎是凸包和多边形面积的裸题. 注意:最后输出的百分号前面有个空格,第一次交P ...
- bzoj1797: [Ahoi2009]Mincut 最小割
最大流+tarjan.然后因为原来那样写如果图不连通的话就会出错,WA了很久. jcvb: 在残余网络上跑tarjan求出所有SCC,记id[u]为点u所在SCC的编号.显然有id[s]!=id[t] ...
- Jqgrid入门-Jqgrid列数据拖动(七)
上一章提到在Jqgrid中如何设置二级表头,这一章节主要探讨Jqgrid表格里面的数据如果实现拖动功能,比如你想把第一行的数据拖到当前页的最后一行,或者其他位置. Jqgrid表格插件自己没有 ...
- 简单分析什么是SQL注入漏洞
现在很多人在入侵的过程中基本都是通过SQL注入来完成的,但是有多少人知道为什么会有这样的注入漏洞呢?有的会随口说着对于字符的过滤不严造成的.但是事实是这样吗?我们学这些,不仅要知其然,更要知其所以然! ...
- HDU 3749 Financial Crisis 经济危机(点双连通分量)
题意: 给一个图n个点m条边(不一定连通),接下来又q个询问,询问两个点是为“不相连”,“仅有一条路径可达”,“有两条及以上的不同路径可达”三种情况中的哪一种.注:两条以上的路径指的是路径上的点连1个 ...
- POJ 1208 The Blocks Problem
The Blocks Problem Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5397 Accepted: 231 ...
- webdriver(python)学习笔记二
自己开始一个脚本开始学习: # coding = utf-8 from selenium import webdriver browser = webdriver.Firefox() browser. ...
- HDU 5278 PowMod 数论公式推导
题意:中文题自己看吧 分析:这题分两步 第一步:利用已知公式求出k: 第二步:求出k然后使用欧拉降幂公式即可,欧拉降幂公式不需要互质(第二步就是BZOJ3884原题了) 求k的话就需要构造了(引入官方 ...
- 在word中显示漂亮的代码
在word中粘贴或写代码时,通常得不到想要的格式,可用‘Notepad++’工具实现. 步骤: (1)安装Notepad++软件,把代码粘贴进去,选择菜单栏中的语言,然后选择相应代码语言,如P-> ...
- Unicode转为UTF8
Unicode转换为UTF8 要说这个转换也简单,使用WideCharToMultiByte两次或者直接一次就可以转换. 今天在弄VLC的时候,由于VLC的视频文件名使用UTF8编码,因此当路径中包含 ...