一、tigase简介
tigase 完全实现了XMPP协议,除了全面实施的两个核心协议,它支持了很多你可能永远都需要的扩展协议。Tigase是开源的,如果你有那个能力,你可以自定义自己的XMPPServer,当然经过进行了很多次测试,但仍然可能有bug,你可以修改bug并提供代码到官方
二、使用docker搭建tigase-server
参考地址:tigase.net/tigase-meet…
安装tigase-server之前首先需要一个mysql
首先拉取镜像
docker pull tigase/tigase-xmpp-server ##拉取镜像docker run -d --name tigase-server --link mysql:mysql -p 30001:5290 -p 30002:8080 -p 30003:5222 tigase/tigase-xmpp -server ##启动tigase-server
然后访问http://ip:port 进入设置界面,账号admin 密码tigase
然后直接下一步,最后重新启动tigase-server
然后再进入系统
创造虚拟空间
三、配置TLS证书
这里直接使用openssl来生成证书
openssl req -nodes -new -newkey rsa:2048 -keyout qhliao.im.key -out qhliao.im.csr
这一步会让你输入一个密码,一定要记住住这个密码,而且俗名是你虚拟域的名字,比我这个就是qhliao.im
openssl x509 -req -days 365 -in qhliao.im.csr -signkey qhliao.im.key -out qhliao.im.crtcat qhliao.im.crt qhliao.im.key > qhliao.im.pem
转为pkcs12
openssl pkcs12 -export -out qhliao.im.p12 -inkey qhliao.im.key -in qhliao.im.crt
转为jks
keytool -importkeystore -srckeystore qhliao.im.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore qhliao.im.jks
然后把qhliao.im.pem文件复制到tigase-server目录里面的certs里面docker的对话下面命令
docker cp qhliao.im.pem tigase-server:/home/tigase/tigase-server/certs
然后重新启动tigase
docker 重启 tigase 服务器
至此服务器配置好了,下面开始客户端连接,这里表演Smack连接服务器和Spark客户端连接服务
四、Smack连接
首先导入maven依赖
<依赖关系> <groupId>org.igniterealtime.smack</groupId> <artifactId>smack-java8</artifactId> <version>4.4.0</version></dependency><dependency> <groupId>org.igniterealtime.smack</groupId> <artifactId>smack-tcp</artifactId> <version>4.4.0</version></dependency><dependency> <groupId>org.igniterealtime.smack</groupId> <artifactId>smack-im</artifactId> <version>4.4.0</version></dependency><dependency> <groupId>org.igniterealtime.smack</groupId> <artifactId>smack 扩展</artifactId> <version>4.4.0</version></dependency>
把刚出生的证明书qhliao.im.jks类型的复制到项目的根目录然后代码
public static AbstractXMPPConnection connection() { 尝试{ SSLContext ctx = SSLContext.getInstance("SSL"); TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509"); KeyStore tks = KeyStore.getInstance("JKS"); tks.load(XmppTest.class.getResourceAsStream("/qhliao.im.jks"), "你刚的密码".toCharArray()); tmf.init(tks); ctx.init(null, tmf.getTrustManagers(), null); XMPPTCPConnectionConfiguration 配置 = XMPPTCPConnectionConfiguration.builder() .setHost("ip").setPort(30003) .setXmppDomain("qhliao.im") .setSendPresence(真) .setCompressionEnabled(假) .setSslContextFactory(() -> ctx) .setSecurityMode(ConnectionConfiguration.SecurityMode.required) .setResource("打") .setCustomX509TrustManager(new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) { } public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType) { } }) 。建造(); XMPPTCPConnection xmppConnection = new XMPPTCPConnection(配置); xmppConnection.connect(); 返回 xmppConnection; } 赶上(异常 e){ log.error("链接失败"); log.error(ExceptionUtils.getStackTrace(e)); } 返回空值; }
然后连接
AbstractXMPPConnection connection = connection();try { if (connection != null && connection.isConnected()) { connection.login("浪市", "浪市"); } } catch (Exception e) { log.error("报错啊拉啊啊"); log.error(ExceptionUtils.getStackTrace(e)); connection.disconnect(); }
五、使用Spark连接 首先下载Spark xmpp.org/software/cl…
为Spark安装证书
选择刚生成的qhliao.im.crt 新增 然后确定保存, 如果没有配置域名称则需要
然而后保存新建账号
最后就可以登录了
文章来源:
https:///post/6992899508694859783