smartboot 开源组织 smartboot 开源组织
首页
  • smart-socket
  • smart-http
  • smart-servlet
  • smart-mqtt
  • smart-license
  • feat
❤️开源捐赠
💰付费服务
🏠加入社区
  • Gitee (opens new window)
  • Github (opens new window)
首页
  • smart-socket
  • smart-http
  • smart-servlet
  • smart-mqtt
  • smart-license
  • feat
❤️开源捐赠
💰付费服务
🏠加入社区
  • Gitee (opens new window)
  • Github (opens new window)
  • smart-socket 首页
  • 概要

    • 关于 smart-socket
    • 我们的用户
  • 快速上手

    • 🚩五分钟上手
    • 🚩通信协议
    • 性能压测
    • 新手常见问题
  • 高级进阶

    • 1.状态机
    • 2.服务端绑定网卡
  • 插件

    • 1. 关于插件💬
      • 前言
      • Plugin接口设计
      • 自定义插件
      • 启用插件
    • 2. 心跳插件
    • 2. 闲置超时插件
    • 3. 通信调参插件
    • 4. 黑名单插件🛡
    • 5. 加密通信插件🛡
    • 6. 流量防控插件🛡
    • 7. 码流监测插件🛡
    • 8. proxy-protocol插件
  • 公众号

    • 💰单机百万长连接背后的故事
    • 💰揭秘百万长连接背后的黑科技
    • 💰让通信数据无所遁形
    • 性能分析的一柄利刃
    • 💰smart-socket的那点事之内存池
  • smart-socket
  • 插件
三刀
2022-11-01
目录

1. 关于插件💬

# 前言

NetMonitor 是 smart-socket 三大核心接口中最不为人所关注的一个。但它却是其中功能最强大的,smart-socket 的插件化能力正是从中演化而来。

# Plugin接口设计

NetMonitor 定义的方法主要是针对 I/O 操作相关的切面,当对应的事件即将或已经被执行时,会触发 smart-socket 的回调动作。具体接口设计如下: 仅 NetMonitor 已有的设计,还不足以支撑起插件化功能的各项要求,所以 smart-socket 专门定义了插件接口:Plugin。 该接口继承自 NetMonitor,并新增了两个方法(见下图)。

# 自定义插件

定义插件,说白了就是实现 Plugin 接口。根据你的实际需求,编写 Plugin 各方法的执行逻辑。

除了 Plugin 原有的方法,你还可以在实现类中进一步扩展本插件的方法,以供外部调用。

以 smart-socket 自带的黑名单插件 BlackListPlugin 为例,它不仅实现了 Plugin 定义的方法,还增加了两个方法:

  • addRule:添加黑名单规则
  • removeRule:移除黑名单规则。

当启用这个插件后,凡是匹配黑名单规则的连接请求都将直接被拒绝。

为能够满足不同场景的通信需求,smart-socket 已经内置了一些比较实用的插件,开箱即用:

  • BlackListPlugin:黑名单插件,用于拒绝不合规的网络连接。
  • HeartPlugin:心跳插件。
  • MonitorPlugin:网络监控插件,监控连接数、流量、消息处理情况。
  • SslPlugin:TLS/SSL 通信插件。
  • SocketOptionPlugin:通道连接属性配置插件。

如果你有其他方面的插件需求,可以自己实现 Plugin 接口,或者给我们提需求。

# 启用插件

插件定义出来后,还需将其注册至通信服务中方可生效。这个时候需要依赖实现了 MessageProcessor 接口的抽象类:AbstractMessageProcessor。

注意:之前进行通信开发要求实现 MessageProcessor 接口,但如果需要启用插件,必须得继承 AbstractMessageProcessor 类。

调用 AbstractMessageProcessor#addPlugin 方法可以将某个插件注册至通信服务中, 该插件会被存放到 AbstractMessageProcessor 内置的 List 成员变量 plugins,服务启动即可生效。

2.服务端绑定网卡
2. 心跳插件

← 2.服务端绑定网卡 2. 心跳插件→

Theme by Vdoing | Copyright © 2017-2025 三刀
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式