tigase 安装及基本开发

2024-03-19 22:48
文章标签 安装 开发 基本 tigase

本文主要是介绍tigase 安装及基本开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

参考:http://docs.tigase.org/tigase-server/snapshot/Administration_Guide/html/#manualinstall

1.下载server的包(http://www.tigase.net/downloads)

2.解压tar -xzvf tigase-server-x.y.z-bv.tar.gz

3.chmod u+x ./scripts/tigase.sh

4.修改两个配置文件:tigase.conf和init.properties:

修改tigase.conf中的

JAVA_HOME="${JDKPath}"

JAVA_HOME="${JAVA_HOME}"

修改init.properties内容(下面是最基本的,后面根据需要添加):

config-type=--gen-config-def

--admins=admin@192.168.43.146

--virt-hosts = 192.168.43.146

--debug=server

--user-db=mysql

--user-db-uri=jdbc:mysql://localhost:3306/tigasedb?user=root&password=root&useUnicode=true&characterEncoding=UTF-8&autoCreateUser=true

5.初始化数据库(root/root为数据库账号密码):

./scripts/db-create-mysql.sh root root

6.启动tigase server:

./scripts/tigase.sh start etc/tigase.conf

7.通过查看日志来确认启动是否正常:

tail -f ./logs/tigase.log.0

之后就可以通过各种client(http://xmpp.org/software/clients.html),例如spark和psi等连接server

一些常见的问题:

1.如何进行扩展

只需要添加下面的一些maven依赖:

<dependencies>

<dependency>

<groupId>tigase</groupId>

<artifactId>tigase-server</artifactId>

<version>7.0.4</version>

</dependency>

<dependency>

<groupId>tigase</groupId>

<artifactId>tigase-message-archiving</artifactId>

<version>1.1.0</version>

</dependency>

<dependency>

<groupId>tigase</groupId>

<artifactId>tigase-muc</artifactId>

<version>2.3.0</version>

</dependency>

<dependency>

<groupId>tigase</groupId>

<artifactId>tigase-pubsub</artifactId>

<version>3.1.0</version>

</dependency>

<dependency>

<groupId>tigase</groupId>

<artifactId>tigase-xmltools</artifactId>

<version>3.4.5</version>

</dependency>

<dependency>

<groupId>tigase</groupId>

<artifactId>tigase-http-api</artifactId>

<version>1.1.1</version>

</dependency>

<dependency>

<groupId>tigase</groupId>

<artifactId>tigase-http-api-jetty</artifactId>

<version>1.0.0</version>

</dependency>

<dependency>

<groupId>tigase</groupId>

<artifactId>tigase-utils</artifactId>

<version>3.4.4</version>

</dependency>

</dependencies>

 

<repositories>

<repository>

<id>tigase</id>

<name>Tigase repository</name>

<url>http://maven.tigase.org</url>

</repository>

<repository>

<id>tigase-snapshot</id>

<name>Tigase repository</name>

<url>http://build.xmpp-test.net/maven/</url>

<snapshots>

<enabled>true</enabled>

</snapshots>

</repository>

</repositories>

 

然后我们就可以使用tigase相关的api,之后打成jar包放在tigase安装目录的jars目录下即可。

2.自定义的component如何发送packet:

通过tigase.server.AbstractMessageReceiver类的 boolean addOutPacket(Packet packet)方法即可

3.tigase好友关系在哪个表中维护?

在tig_pairs表

4.如何开启日志:

 

--debug=xmpp.impl.roster

开启tigase.xmpp.impl.roster包下面的类的日志

 

--debug-packages = com.tch.test.tigase.mytigase

开启我们自己的com.tch.test.tigase.mytigase包下面的类的日志

5.添加好友以及查看用户状态的时候,自动认证,无需对方同意,只需要添加下面的一个配置即可(参考:https://projects.tigase.org/issues/1696):

sess-man/plugins-conf/auto-authorize=true

6.如何在程序中添加用户:

调用存储过程 TigAddUserPlainPw,

java.sql.Connection.prepareStatement("{call TigAddUserPlainPw(?, ?)}");

第一个参数是user_id,第二个参数是密码

7.如何持久化聊天室(群聊,参考:https://projects.tigase.org/boards/8/topics/3456?r=5680):

--comp-name-2 = muc

--comp-class-2 = tigase.muc.MUCComponent

muc/default_room_config/muc#roomconfig_persistentroom=true

 

 

 

tigase init.properties一些配置的含义:

#支持群聊,并且默认就会保存群聊记录到muc_history表,但是默认是临时保存,当所有人离开之后,群就会不存在,群聊天记录也会删除,可以通过muc/default_room_config/muc#roomconfig_persistentroom=true来支持持久化(不配置这个component的话,不支持群聊)

--comp-name-2 = muc

--comp-class-2 = tigase.muc.MUCComponent

 

#支持消息存储(tig_ma_msgs表,不配置这个component的话,不会存储私聊消息)

--comp-name-3=message-archive

--comp-class-3=tigase.archive.MessageArchiveComponent

 

#消息存储的数据库配置,不配置这个参数的话,会使用--user-db-uri的数据库地址

message-archive/archive-repo-uri=jdbc:mysql://localhost:3306/messagearchivedb?user=root&password=root&useUnicode=true&characterEncoding=UTF-8

 

#指定消息存储的component

sess-man/plugins-conf/message-archive-xep-0136/component-jid=message-archive@192.168.43.146

#存储消息的方式(不配置这个参数的话,不会保存消息)

sess-man/plugins-conf/message-archive-xep-0136/required-store-method=message

 

#自动授权,配置这个参数之后,加好友的时候,不需要对方同意,自动添加成功

sess-man/plugins-conf/auto-authorize=true

#持久化群聊房间,不配置这个参数的话,所有人离开房间的时候,这个群就不存在了。

muc/default_room_config/muc#roomconfig_persistentroom=true

 

jaxmpp客户端:

添加仓库地址:

<repositories>

<repository>

<id>tigase</id>

<name>Tigase repository</name>

<url>http://maven.tigase.org</url>

</repository>

<repository>

<id>tigase-snapshot</id>

<name>Tigase repository</name>

<url>http://build.xmpp-test.net/maven/</url>

<snapshots>

<enabled>true</enabled>

</snapshots>

</repository>

</repositories>

 

添加依赖:

                 <dependency>

<groupId>tigase</groupId>

<artifactId>jaxmpp-core</artifactId>

<version>2.1.0</version>

</dependency>

<dependency>

<groupId>tigase</groupId>

<artifactId>jaxmpp-j2se</artifactId>

<version>2.1.0</version>

</dependency>

 

 

客户端代码:

 

import tigase.jaxmpp.core.client.BareJID;

import tigase.jaxmpp.core.client.JID;

import tigase.jaxmpp.core.client.SessionObject;

import tigase.jaxmpp.core.client.exceptions.JaxmppException;

import tigase.jaxmpp.core.client.observer.Listener;

import tigase.jaxmpp.core.client.xmpp.modules.presence.PresenceModule;

import tigase.jaxmpp.core.client.xmpp.modules.presence.PresenceModule.PresenceEvent;

import tigase.jaxmpp.core.client.xmpp.modules.roster.RosterItem;

import tigase.jaxmpp.core.client.xmpp.modules.roster.RosterStore;

import tigase.jaxmpp.core.client.xmpp.stanzas.Message;

import tigase.jaxmpp.core.client.xmpp.stanzas.Stanza;

import tigase.jaxmpp.core.client.xmpp.stanzas.StanzaType;

import tigase.jaxmpp.j2se.Jaxmpp;

 

public class JaxmppExample {

 

    public static void main( String[] args ) throws JaxmppException, InterruptedException {

 

        final Jaxmpp jaxmpp = new Jaxmpp();

        try {

jaxmpp.getModulesManager().getModule( PresenceModule.class ).addListener( PresenceModule.ContactChangedPresence, new Listener<PresenceModule.PresenceEvent>() {

   @Override

   public void handleEvent( PresenceEvent be ) throws JaxmppException {

       System.out.println( String.format( "Presence received:\t %1$s is now %2$s (%3$s)", be.getJid(), be.getShow(), be.getStatus() != null ? be.getStatus() : "none" ) );

   }

} );

jaxmpp.getSessionObject().setProperty(tigase.jaxmpp.j2se.connectors.socket.SocketConnector.HOSTNAME_VERIFIER_DISABLED_KEY, Boolean.TRUE);

jaxmpp.getProperties().setUserProperty( SessionObject.USER_BARE_JID, BareJID.bareJIDInstance( "richmj@192.168.43.146" ) );

jaxmpp.getProperties().setUserProperty( SessionObject.PASSWORD, "richmj" );

 

System.out.println("开始登陆。。。");

 

jaxmpp.login();

 

System.out.println("登陆成功。。。");

 

       RosterStore rosterStore = jaxmpp.getRoster();

       for(RosterItem rosterItem : rosterStore.getAll()){

       System.out.println("rosterItem:" + rosterItem);

       }

 

       jaxmpp.send(createMessage("admin,你好啊"));

//contact.sendMessage(JID.jidInstance("admin@192.168.43.146"), "Test", "This is a test");

 

} catch (Exception e) {

e.printStackTrace();

}finally {

if(jaxmpp != null){

jaxmpp.disconnect();

}

}

    }

    

    private static Stanza createMessage(String msg) {

try {

/*

<message id="pCp2F-58" to="richmj@192.168.43.146" from="admin@192.168.43.146/Spark" type="chat">

<body>1</body>

</message>

*/

Message message = Message.create();

message.setType(StanzaType.chat);

message.setAttribute("from", JID.jidInstance("richmj@192.168.43.146").toString());

message.setAttribute("to", JID.jidInstance("admin@192.168.43.146").toString());

message.setBody(msg);

System.out.println("message:" + message.getAsString());

return message;

} catch (JaxmppException e) {

e.printStackTrace();

}

return null;

}

    

}

 

 

 

 

 

 

 

 

 

 

这篇关于tigase 安装及基本开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827479

相关文章

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是