tigase服务与源码分析(十四)

前言

在提及代码前,对Tigase的一些重要概念做一些讲解。逻辑上,所有的tigase代码分为三个部分:

  • Components,tigase中最重要的东西。拥有独立的地址,可以发送和接收节。可配置,并且可响应各种各样的事件。tigase中主要的组件包括,c2s连接管理器,s2s连接管理器,会话管理器,XEP-0114拓展组件连接组件管理器,MUC等等。
  • plugin,插件,用于响应处理的xmpp节。没有独立的地址,插件被组件加载,比如VCard,jabber:iq:register,认证等等。
  • Connectors ,连接器用于访问数据信息,比如数据库,LDAP,用于存储和保存用户数据。有两种类型的连接器,包括认证连接器,用户数据连接器。

Components

  • tigase.server.ServerComponent ,这是一个最基本的组件和接口。所有的组件都必须实现它。

  • tigase.server.MessageReceiver,实现这个接口可以实现类似c2s管理器和会话管理器接受数据包的功能。

  • tigase.conf.Configurable,组件实现这个接口之后可以实现运行时可配置化。

  • tigase.disco.XMPPService,对象可以用这个接口来响应ServiceDiscovery请求。

  • tigase.stats.StatisticsContainer,对象可以使用这个接口来实现运行时统计的功能。

  • tigase.server.AbstractMessageReceiver,实现了一下四个接口。ServerComponentMessageReceiverConfigurable and StatisticsContainer。它拥有内部队列管理和防死锁的功能。而且必须实现以下两个方法:

    abstract void processPacket(Packet packet); boolean addOutPacket(Packet packet);
  • tigase.server.ConnectionManager,它继承自AbstractMessageReceiver ,这个类实现网络连接管理工作,如果你的功能需要实现数据包的接受和发送,你应该实现基类。有关一下两个方法:

    abstract void processPacket(Packet packet); abstract Queue processSocketData(XMPPIOService serv);

插件

所有的插件的定义和实现被放在tigase.xmpp下,其中包括三种类型的插件:

  • XMPPProcessorIfc ,他是最重要,也是最基本的插件。接收到数据包,处理后返回。
  • XMPPPreprocessorIfc,对数据包进行预处理。
  • XMPPPostprocessorIfc,当数据包发送成功后,在进行一些别的操作。

Connector

从网络,IO下接受到二进制数据,经过tigase.io-->tigase.net-->tigase.xml

重点内容提到这儿就差不多了。

Tigase运行流程

忙着呢。这部分先不管。

Tigase Http Api配置和开发

基本配置

--comp-name-1=http --comp-class-3=tigase.http.HttpMessageReceiver

通过配置上面的代码来加载http组建。

默认的配置组建将尝试 在8080端口上启动独立的Jetty HTTP Server。并且添加默认启动模块,包括RestModule,RestModule将从/rest目录下添加REST API到上下文中。默认情况下,RestModule将会加载位于scripts/rest/xxx的所有groovy脚本。绑定对应的/rest/api

注意事项:位于src/scripts/groovy/tigase/rest的HTTP脚本都可用。

属性配置

下面有一些支持从init.properties中添加的属性:

  • http/ports[i] -
  • http/xxx/socket=ssl -
  • http/xxx/domain -
  • http/server-class -

__EOF__

本文作者veblenJan°
本文链接https://www.cnblogs.com/veblen/p/14703878.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   venblenJan°  阅读(426)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示