Tigase进行即时通讯的实现
文章目录
- Tigase介绍
- XMPP与MQTT协议介绍
- 安装Tigase
- 通过smack进行使用
- 导入maven
- 实现
- 结语
Tigase介绍
它是基于XMPP协议开发的服务器,与openfire类似,但是tigase单台服务器能承受的在线人数远远大于openfire。
XMPP与MQTT协议介绍
XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。
实时上即时通讯的协议不仅仅只有xmpp,还有其它的,比如MQTT协议(遥信消息队列传输),不过MQTT多数在物联网使用,MQTT是通过发布/订阅实现。
安装Tigase
首先到官网下载[https://tigase.net/downloads],安装Tigase之前要安装JDK和Mysql数据库,下载后进入win-stuff文件夹,运行Setup.bat进行设置,访问localhost:8080进行配置。可以进入主目录的wrapper.exe进行运行。
通过smack进行使用
导入maven
<dependency><groupId>org.igniterealtime.smack</groupId><artifactId>smack-im</artifactId><version>4.3.4</version></dependency><dependency><groupId>org.igniterealtime.smack</groupId><artifactId>smack-extensions</artifactId><version>4.3.4</version></dependency><dependency><groupId>org.igniterealtime.smack</groupId><artifactId>smack-experimental</artifactId><version>4.3.4</version></dependency><dependency><groupId>org.igniterealtime.smack</groupId><artifactId>smack-tcp</artifactId><version>4.3.4</version></dependency><dependency><groupId>org.igniterealtime.smack</groupId><artifactId>smack-java7</artifactId><version>4.3.4</version></dependency>
实现
public class TigaseUtil {//连接public static XMPPTCPConnection conn() {XMPPTCPConnectionConfiguration configuration = null;XMPPTCPConnection xmppConnection=null;try {configuration = XMPPTCPConnectionConfiguration.builder().setHost("127.0.0.1").setPort(5222).setXmppDomain("localhost").setSecurityMode(ConnectionConfiguration.SecurityMode.disabled).build();xmppConnection = new XMPPTCPConnection(configuration);xmppConnection.connect();System.out.println("---连接到tigase---");} catch (Exception e) {e.printStackTrace();}return xmppConnection;}//关闭连接public static void closeConnetion(XMPPTCPConnection xmppConnection){if (xmppConnection!=null){xmppConnection.disconnect();System.out.println("---断开tigase---");}}//创建账号public static boolean createAccount(XMPPTCPConnection conn,String username,String password){AccountManager.sensitiveOperationOverInsecureConnectionDefault(true);boolean b=false;if (conn==null){return b;}try {AccountManager.getInstance(conn).createAccount(Localpart.fromOrThrowUnchecked(username),password);b=true;} catch (Exception e) {e.printStackTrace();}return true;}
}
调用TigaseUtil的createAccount()创建两个账号后,我们进行账号间的通讯
public class TigaseSend {public static void main(String[] args) {XMPPTCPConnection conn = TigaseUtil.conn();try {//登录conn.login("user1","123456");ChatManager chatManager = ChatManager.getInstanceFor(conn);//创建chat对象指定接收的对象Chat chat = chatManager.chatWith(JidCreate.entityBareFrom("user2@localhost"));chat.send("test");} catch (Exception e) {e.printStackTrace();}finally {TigaseUtil.closeConnetion(conn);}}
}
接收消息
public class TigaseRecieve {public static void main(String[] args){XMPPTCPConnection conn = TigaseUtil.conn();try {conn.login("user2","123456");ChatManager.getInstanceFor(conn).addIncomingListener(new IncomingChatMessageListener() {@Overridepublic void newIncomingMessage(EntityBareJid entityBareJid, Message message, Chat chat) {System.out.println(message.getBody());}});Thread.sleep(10*1000);} catch (Exception e) {e.printStackTrace();}}
}
这里简单的介绍了通过smack连接,进行登录,发送消息,其它的可以查看文档[https://download.igniterealtime.org/smack/docs/latest/javadoc/]
结语
通过xmpp协议以及Tiagse服务器我们就可以自己搭建IM系统了,有兴趣的小伙伴可以自己实现一个完整的im系统。
Tigase进行即时通讯的实现相关推荐
- tigase mysql_即时通讯之服务端篇Tigase.
摘要 xmpp是一个应用层协议,主要做网页版即时通讯,是基于RFC3920和RFC3921实现,服务端常见的框架有openfire,tigase,prosody等,这三个都亲自踩过坑,唯有tigase ...
- 集成环信即时通讯(IM)及使用——服务端
文章目录 目的 流程 使用 注册账号和创建应用 调用环信接口 建议 如何自己搭建一个im服务器 目的 本篇讲述服务端如何集成环信SDK,实现IM系统. 流程 注册账号 创建应用 调用环信接口 使用 注 ...
- tigase集群配置搭建官方方法-xmpp通讯协议配备tigase集群开发简单省事-哇谷即时通讯IM源码服务-哇谷即时通讯源码
tigase集群配置搭建官方方法-xmpp通讯协议配备tigase集群开发简单省事-哇谷即时通讯IM源码服务 哇谷即时通讯IM云-即时通讯源码-音视频会议-直播-短视频-企业即时通讯办公-聊天app- ...
- XyTalk企业即时通讯IM开始开源
网址: https://gitee.com/475660/xyTalk-pc https://github.com/xy-Group/xyTalk-pc Xy.Platform是一个高性能.可扩展的企 ...
- 即时通讯源码-即时通讯集群服务免费-通讯百万并发技术-Openfire 的安装配置教程手册-哇谷即时通讯集群方案-哇谷云-哇谷即时通讯源码
即时通讯源码-即时通讯集群服务免费-通讯百万并发技术-Openfire 的安装配置教程手册-哇谷即时通讯集群方案-哇谷云 1,openfire开发环境配置 很久没有写点东西了.最近很烦心,领导不给力. ...
- Openfire XMPP Smack RTC IM 即时通讯 聊天 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 2022-2028年中国即时通讯市场投资分析及前景预测报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了即时通讯行业相关概述.中国即时通讯行业运行环境.分析了中国即时通讯行 ...
- 接入网易云信IM即时通讯的微信小程序聊天室
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 接入流程: 初次接触网易云通信IM服务,您可以通过以下产品介绍文档了解我们的产品功能.相关概念.业务限制: 产 ...
- 即时通讯下数据粘包、断包处理实例(基于CocoaAsyncSocket)
来源:涂耀辉 www.jianshu.com/p/2e16572c9ddc 如有好文章投稿,请点击 → 这里了解详情 前言 本文旨以实例的方式,使用CocoaAsyncSocket这个框架进行数据封包 ...
最新文章
- 小鹏发布会上硬刚特斯拉AutoPilot:有视频有真相,特斯拉不懂中国路况
- 序列化--反序列化:Schema evolution in Avro, Protocol Buffers and Thrift
- alibaba cloud 打包_阿里也上VS Code船了,发布Alibaba Cloud Toolkit插件
- 千位亿万富豪调研:六成富豪担心继承人婚姻问题致财富外流
- sublime配置运行python文件的快捷键
- asp.net core 系列之webapi集成EFCore的简单操作教程
- Visual Studio 20周年软件趋势随想
- 二叉树的深度优先遍历原理及python实现
- java swing 字体设置_java如何改变Swing应用程序的默认字体/字号
- CTO 说,再用错@Autowired 和@Resource 就可以领盒饭了
- 项目管理(PMP)你要的干货都在这!
- 基本农田卫星地图查询_别被迷惑了,你手机上的北斗导航App和北斗卫星导航没关系...
- 羊年祝福语(羊年祝福大全)
- 在Python中以foo.bar.baz的方式访问嵌套dict中的内容
- 4. 上新了Spring,全新一代类型转换机制
- 失业培训计算机试题,2017年职称计算机考试考前练习试题(11)
- 如何诊断SQL数据?
- 4k电视接电脑鼠标延迟解决
- Day002--MySQL中的图形工具的使用并创建数据表及查看表
- 微软气坏了!Windows 惨遭抄袭,这款系统简直超越正品