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. 关于插件💬
    • 2. 心跳插件
    • 2. 闲置超时插件
    • 3. 通信调参插件
    • 4. 黑名单插件🛡
    • 5. 加密通信插件🛡
    • 6. 流量防控插件🛡
    • 7. 码流监测插件🛡
    • 8. proxy-protocol插件
  • 公众号

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

1.状态机

在smart-socket中将状态机视为一种事件类型。

当事件被触发时会及时回调MessageProcessor#stateEvent方法,所有开发人员可以自由定制自己关心的状态机处理逻辑。比如:新建连接(NEW_SESSION),断开连接(SESSION_CLOSED)。

状态码 描述
NEW_SESSION 连接已建立并实例化Session对象
REJECT_ACCEPT 拒绝接受连接,仅Server端有效。黑名单插件生效后会触发该状态机。
ACCEPT_EXCEPTION 接受连接异常,仅Server端有效。
PROCESS_EXCEPTION 业务处理异常。
执行MessageProcessor.process(AioSession, Object)期间发生未捕获的异常。该状态机仅作为业务逻辑不够健壮的提示,不会影响网络连接。
DECODE_EXCEPTION 协议解码异常。
执行Protocol.decode(ByteBuffer, AioSession)期间发生未捕获的异常。该状态机触发后会自动关闭连接。
INPUT_SHUTDOWN 读通道已被关闭,通会话正在关闭中。常由以下几种情况会触发该状态:
  1. 对端主动关闭write通道,致使本端满足了EOF条件
  2. 当前AioSession处理完读操作后检测到自身正处于SESSION_CLOSING状态
INPUT_EXCEPTION 读操作异常。
在底层服务执行read操作期间因发生异常情况触发了java.nio.channels.CompletionHandler.failed(Throwable, Object)。
OUTPUT_EXCEPTION 写操作异常。
在底层服务执行write操作期间因发生异常情况触发了java.nio.channels.CompletionHandler.failed(Throwable, Object)
SESSION_CLOSING 会话正在关闭中。
执行了AioSession.close(false)方法,并且当前还存在待输出的数据。 一般无需关注该状态机。
SESSION_CLOSED 会话关闭成功。

警告

在上述各状态机中,开发人员要重点留意PROCESS_EXCEPTION和DECODE_EXCEPTION,当触发这类状态机,说明你的代码写的不够严谨。

注意

遇到INPUT_SHUTDOWN、INPUT_EXCEPTION、OUTPUT_EXCEPTION几种情况不要惊慌,这是网络断开所触发的。 有可能是你主动调用了close所致,又或者对方断开了连接。如果你确定该现象在业务层面的表现是一种异常,需要排查其中一方是否编解码算法或者业务逻辑有问题。

新手常见问题
2.服务端绑定网卡

← 新手常见问题 2.服务端绑定网卡→

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