• 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 -
    学海无涯、何时是岸
  • 相关阅读:
    30 Day Challenge Day 11 | Leetcode 55. Jump Game
    30 Day Challenge Day 11 | Leetcode 11. Container With Most Water
    30 Day Challenge Day 10 | Leetcode 701. Insert into a Binary Search Tree
    30 Day Challenge Day 10 | Leetcode 1. Two Sum
    30 Day Challenge Day 10 | Leetcode 3. Longest Substring Without Repeating Characters
    30 Day Challenge Day 9 | Leetcode 425. Word Squares
    30 Day Challenge Day 8 | Leetcode 200. Number of Islands
    30 Day Challenge Day 7 | Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
    30 Day Challenge Day 7 | Hackerrank: Tree: Huffman Decoding
    30 Day Challenge Day 6 | Leetcode 92. Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/veblen/p/14703878.html
Copyright © 2020-2023  润新知