diff --git a/.github/images/server-gdi.svg b/.github/images/server-gdi.svg
index f07fe67..3dc2a3e 100644
--- a/.github/images/server-gdi.svg
+++ b/.github/images/server-gdi.svg
@@ -1 +1 @@
-title%20This%20is%20a%20title%0A%0Aparticipantspacing%20equal%0A%23participantspacing%20gives%20manual%20control%20of%20spacing%20between%20participants%2C%20equal%3A%20equal%20distance%20between%20all%20participants%2C%20number%20i.e.%2020.5%3A%20minimum%20space%0A%0Aactor%20Client%23lightgreen%0A%23supported%20participant%20types%3A%20participant%2C%20actor%2C%20boundary%2C%20control%2C%20entity%2C%20database%0A%0Aparticipantgroup%20%23lightgreen%20Minotaur%20Server%0Aparticipant%20Server%0Aparticipant%20Shunt%0Aabox%20left%20of%20Shunt%3A%20System%20%E6%B6%88%E6%81%AF%E5%B0%86%E5%85%A8%E5%B1%80%E5%8D%95%E7%BA%BF%E7%A8%8B%E6%89%A7%E8%A1%8C%EF%BC%8CShunt%20%E6%B6%88%E6%81%AF%E5%B0%86%E4%BC%9A%5Cn%E5%9C%A8%E8%BF%9E%E6%8E%A5%E5%BD%93%E5%89%8D%E6%89%80%E5%9C%A8%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E5%86%85%E6%89%A7%E8%A1%8C%E3%80%82%E7%9B%B8%E5%90%8C%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E7%9A%84%5Cn%E6%B6%88%E6%81%AF%E5%B0%86%E4%B8%B2%E8%A1%8C%E5%A4%84%E7%90%86%EF%BC%8C%E4%B8%8D%E5%90%8C%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E6%B6%88%E6%81%AF%E5%B9%B6%E8%A1%8C%E5%A4%84%E7%90%86%E3%80%82%5Cn%5Cn%E8%BF%9E%E6%8E%A5%E5%8F%AF%E6%A0%B9%E6%8D%AE%E4%B8%9A%E5%8A%A1%E5%9C%BA%E6%99%AF%E7%81%B5%E6%B4%BB%E7%9A%84%E9%80%9A%E8%BF%87%20srv.UseShunt%20%E6%9D%A5%5Cn%E5%88%87%E6%8D%A2%E5%BD%93%E5%89%8D%E6%89%80%E5%A4%84%E7%9A%84%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%0Aabox%20left%20of%20Shunt%3A%20%E5%BC%82%E6%AD%A5%E6%B6%88%E6%81%AF%5Cn%5Cn(SystemMessage)%20srv.PushAsyncMessage%5Cn(ShuntMessage)%20srv.PushShuntAsyncMessage%5Cn(SystemMessage)%20srv.PushUniqueAsyncMessage%5Cn(ShuntMessage)%20srv.PushUniqueShuntAsyncMessage%5Cn%5Cn%20Unique%20%E6%B6%88%E6%81%AF%E5%B0%86%E4%BC%9A%E5%9C%A8%E4%B8%8A%E4%B8%80%E4%B8%AA%E7%9B%B8%E5%90%8C%E6%B6%88%E6%81%AF%E6%9C%AA%E6%89%A7%E8%A1%8C%E5%AE%8C%E6%AF%95%5Cn%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%BF%BD%E7%95%A5%E5%90%8E%E7%BB%AD%E6%B6%88%E6%81%AF%0Aend%0A%0AClient-%3EServer%3A%E9%80%9A%E8%BF%87%20WebSocket%E3%80%81TCP%E3%80%81UDP%E3%80%81KCP%20%E7%AD%89%E5%8D%8F%E8%AE%AE%E4%B8%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%BB%BA%E7%AB%8B%E8%BF%9E%E6%8E%A5%0Aloop%20Write%20Loop%0AServer%20-%3EClient%3A%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%E5%8C%85%0Aabox%20left%20of%20Server%3A%20%E6%95%B0%E6%8D%AE%E5%8C%85%E5%B0%86%E8%A2%AB%E5%86%99%E5%85%A5%E5%AF%B9%E5%BA%94%E8%BF%9E%E6%8E%A5%E7%9A%84%E6%97%A0%E7%95%8C%E7%BC%93%E5%86%B2%E5%8C%BA%E5%86%85%E7%AD%89%E5%BE%85%E5%8F%91%E9%80%81%20%EF%BC%8C%E5%86%99%E5%85%A5%5Cn%E7%BC%93%E5%86%B2%E5%8C%BA%E5%90%8E%E9%80%BB%E8%BE%91%E8%A7%86%E4%B8%BA%E5%A4%84%E7%90%86%E5%AE%8C%E6%AF%95%EF%BC%8C%E7%BD%91%E7%BB%9C%20IO%20%E4%B8%8D%E4%BC%9A%E9%98%BB%E5%A1%9E%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%0Aend%0AServer%20--%3EShunt%3A%20(SystemMessage)%20OnConnectionOpenedEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0AServer%20--%3EShunt%3A%20(ShuntMessage)%20OnConnectionOpenedAfterEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0A%0Aloop%20Read%20Loop%0AClient-%3EServer%3A%E5%8F%91%E9%80%81%E6%95%B0%E6%8D%AE%E5%8C%85%0Aabox%20right%20of%20Client%3A%20%E6%95%B0%E6%8D%AE%E5%8C%85%E5%B0%86%E8%A2%AB%E5%8F%91%E9%80%81%E5%88%B0%E8%BF%9E%E6%8E%A5%E5%AF%B9%E5%BA%94%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E7%9A%84%E6%97%A0%E7%95%8C%E7%BC%93%E5%86%B2%E5%8C%BA%E5%86%85%0AServer%20--%3EShunt%3A%20(ShuntMessage)%20OnConnectionReceivePacketEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0AShunt%20--%3E%20Server%3A%20%E5%9B%9E%E5%A4%8D%E6%B6%88%E6%81%AF%0AServer%20--%3E%20Server%3A%20%E5%86%99%E5%85%A5%20Write%20Loop%0Aend%0A%0AClient%20%3C-%3EServer%3A%20%E6%96%AD%E5%BC%80%E6%88%96%E5%85%B3%E9%97%AD%E8%BF%9E%E6%8E%A5%0AServer%20--%3EShunt%3A%20(SystemMessage)%20OnConnectionClosedEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0A This is a title Minotaur Server Client Server Shunt System 消息将全局单线程执行,Shunt 消息将会 在连接当前所在分流渠道内执行。相同分流渠道的 消息将串行处理,不同分流渠道消息并行处理。 连接可根据业务场景灵活的通过 srv.UseShunt 来 切换当前所处的分流渠道 异步消息 (SystemMessage) srv.PushAsyncMessage (ShuntMessage) srv.PushShuntAsyncMessage (SystemMessage) srv.PushUniqueAsyncMessage (ShuntMessage) srv.PushUniqueShuntAsyncMessage Unique 消息将会在上一个相同消息未执行完毕 的情况下忽略后续消息 通过 WebSocket、TCP、UDP、KCP 等协议与服务器建立连接 写入数据包 数据包将被写入对应连接的无界缓冲区内等待发送 ,写入 缓冲区后逻辑视为处理完毕,网络 IO 不会阻塞分流渠道 (SystemMessage) OnConnectionOpenedEvent 消息处理 (ShuntMessage) OnConnectionOpenedAfterEvent 消息处理 发送数据包 数据包将被发送到连接对应分流渠道的无界缓冲区内 (ShuntMessage) OnConnectionReceivePacketEvent 消息处理 回复消息 写入 Write Loop 断开或关闭连接 (SystemMessage) OnConnectionClosedEvent 消息处理 loop [Write Loop] loop [Read Loop]
\ No newline at end of file
+title%20This%20is%20a%20title%0A%0Aparticipantspacing%20equal%0A%23participantspacing%20gives%20manual%20control%20of%20spacing%20between%20participants%2C%20equal%3A%20equal%20distance%20between%20all%20participants%2C%20number%20i.e.%2020.5%3A%20minimum%20space%0A%0Aactor%20Client%23lightgreen%0A%23supported%20participant%20types%3A%20participant%2C%20actor%2C%20boundary%2C%20control%2C%20entity%2C%20database%0A%0Aparticipantgroup%20%23lightgreen%20Minotaur%20Server%0Aparticipant%20Server%0Aparticipant%20Shunt%0Aabox%20left%20of%20Shunt%3A%20System%20%E6%B6%88%E6%81%AF%E5%B0%86%E5%85%A8%E5%B1%80%E5%8D%95%E7%BA%BF%E7%A8%8B%E6%89%A7%E8%A1%8C%EF%BC%8CShunt%20%E6%B6%88%E6%81%AF%E5%B0%86%E4%BC%9A%5Cn%E5%9C%A8%E8%BF%9E%E6%8E%A5%E5%BD%93%E5%89%8D%E6%89%80%E5%9C%A8%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E5%86%85%E6%89%A7%E8%A1%8C%E3%80%82%E7%9B%B8%E5%90%8C%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E7%9A%84%5Cn%E6%B6%88%E6%81%AF%E5%B0%86%E4%B8%B2%E8%A1%8C%E5%A4%84%E7%90%86%EF%BC%8C%E4%B8%8D%E5%90%8C%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E6%B6%88%E6%81%AF%E5%B9%B6%E8%A1%8C%E5%A4%84%E7%90%86%E3%80%82%5Cn%5Cn%E8%BF%9E%E6%8E%A5%E5%8F%AF%E6%A0%B9%E6%8D%AE%E4%B8%9A%E5%8A%A1%E5%9C%BA%E6%99%AF%E7%81%B5%E6%B4%BB%E7%9A%84%E9%80%9A%E8%BF%87%20srv.UseShunt%20%E6%9D%A5%5Cn%E5%88%87%E6%8D%A2%E5%BD%93%E5%89%8D%E6%89%80%E5%A4%84%E7%9A%84%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%0Aabox%20left%20of%20Shunt%3A%20%E5%BC%82%E6%AD%A5%E6%B6%88%E6%81%AF%5Cn%5Cn(SystemMessage)%20srv.PushAsyncMessage%5Cn(ShuntMessage)%20srv.PushShuntAsyncMessage%5Cn(SystemMessage)%20srv.PushUniqueAsyncMessage%5Cn(ShuntMessage)%20srv.PushUniqueShuntAsyncMessage%5Cn%5Cn%20Unique%20%E6%B6%88%E6%81%AF%E5%B0%86%E4%BC%9A%E5%9C%A8%E4%B8%8A%E4%B8%80%E4%B8%AA%E7%9B%B8%E5%90%8C%E6%B6%88%E6%81%AF%E6%9C%AA%E6%89%A7%E8%A1%8C%E5%AE%8C%E6%AF%95%5Cn%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%BF%BD%E7%95%A5%E5%90%8E%E7%BB%AD%E6%B6%88%E6%81%AF%0Aend%0A%0AClient-%3EServer%3A%E9%80%9A%E8%BF%87%20WebSocket%E3%80%81TCP%E3%80%81UDP%E3%80%81KCP%20%E7%AD%89%E5%8D%8F%E8%AE%AE%E4%B8%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%BB%BA%E7%AB%8B%E8%BF%9E%E6%8E%A5%0Aloop%20Write%20Loop%0AServer%20-%3EClient%3A%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%E5%8C%85%0Aabox%20left%20of%20Server%3A%20%E6%95%B0%E6%8D%AE%E5%8C%85%E5%B0%86%E8%A2%AB%E5%86%99%E5%85%A5%E5%AF%B9%E5%BA%94%E8%BF%9E%E6%8E%A5%E7%9A%84%E7%BC%93%E5%86%B2%E5%8C%BA%E5%86%85%E7%AD%89%E5%BE%85%E5%8F%91%E9%80%81%20%EF%BC%8C%E5%86%99%E5%85%A5%5Cn%E7%BC%93%E5%86%B2%E5%8C%BA%E5%90%8E%E9%80%BB%E8%BE%91%E8%A7%86%E4%B8%BA%E5%A4%84%E7%90%86%E5%AE%8C%E6%AF%95%EF%BC%8C%E7%BD%91%E7%BB%9C%20IO%20%E4%B8%8D%E4%BC%9A%E9%98%BB%E5%A1%9E%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%0Aend%0AServer%20--%3EShunt%3A%20(SystemMessage)%20OnConnectionOpenedEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0AServer%20--%3EShunt%3A%20(ShuntMessage)%20OnConnectionOpenedAfterEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0A%0Aloop%20Read%20Loop%0AClient-%3EServer%3A%E5%8F%91%E9%80%81%E6%95%B0%E6%8D%AE%E5%8C%85%0Aabox%20right%20of%20Client%3A%20%E6%95%B0%E6%8D%AE%E5%8C%85%E5%B0%86%E8%A2%AB%E5%8F%91%E9%80%81%E5%88%B0%E8%BF%9E%E6%8E%A5%E5%AF%B9%E5%BA%94%E5%88%86%E6%B5%81%E6%B8%A0%E9%81%93%E7%9A%84%E7%BC%93%E5%86%B2%E5%8C%BA%E5%86%85%0AServer%20--%3EShunt%3A%20(ShuntMessage)%20OnConnectionReceivePacketEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0AShunt%20--%3E%20Server%3A%20%E5%9B%9E%E5%A4%8D%E6%B6%88%E6%81%AF%0AServer%20--%3E%20Server%3A%20%E5%86%99%E5%85%A5%20Write%20Loop%0Aend%0A%0AClient%20%3C-%3EServer%3A%20%E6%96%AD%E5%BC%80%E6%88%96%E5%85%B3%E9%97%AD%E8%BF%9E%E6%8E%A5%0AServer%20--%3EShunt%3A%20(SystemMessage)%20OnConnectionClosedEvent%0AShunt%20--%3E%20Shunt%3A%20%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%0A This is a title Minotaur Server Client Server Shunt System 消息将全局单线程执行,Shunt 消息将会 在连接当前所在分流渠道内执行。相同分流渠道的 消息将串行处理,不同分流渠道消息并行处理。 连接可根据业务场景灵活的通过 srv.UseShunt 来 切换当前所处的分流渠道 异步消息 (SystemMessage) srv.PushAsyncMessage (ShuntMessage) srv.PushShuntAsyncMessage (SystemMessage) srv.PushUniqueAsyncMessage (ShuntMessage) srv.PushUniqueShuntAsyncMessage Unique 消息将会在上一个相同消息未执行完毕 的情况下忽略后续消息 通过 WebSocket、TCP、UDP、KCP 等协议与服务器建立连接 写入数据包 数据包将被写入对应连接的缓冲区内等待发送 ,写入 缓冲区后逻辑视为处理完毕,网络 IO 不会阻塞分流渠道 (SystemMessage) OnConnectionOpenedEvent 消息处理 (ShuntMessage) OnConnectionOpenedAfterEvent 消息处理 发送数据包 数据包将被发送到连接对应分流渠道的缓冲区内 (ShuntMessage) OnConnectionReceivePacketEvent 消息处理 回复消息 写入 Write Loop 断开或关闭连接 (SystemMessage) OnConnectionClosedEvent 消息处理 loop [Write Loop] loop [Read Loop]
\ No newline at end of file
diff --git a/.github/sequence-diagram/server-gdi.text b/.github/sequence-diagram/server-gdi.text
index 5463b93..150dfd4 100644
--- a/.github/sequence-diagram/server-gdi.text
+++ b/.github/sequence-diagram/server-gdi.text
@@ -16,7 +16,7 @@ end
Client->Server:通过 WebSocket、TCP、UDP、KCP 等协议与服务器建立连接
loop Write Loop
Server ->Client:写入数据包
-abox left of Server: 数据包将被写入对应连接的无界缓冲区内等待发送 ,写入\n缓冲区后逻辑视为处理完毕,网络 IO 不会阻塞分流渠道
+abox left of Server: 数据包将被写入对应连接的缓冲区内等待发送 ,写入\n缓冲区后逻辑视为处理完毕,网络 IO 不会阻塞分流渠道
end
Server -->Shunt: (SystemMessage) OnConnectionOpenedEvent
Shunt --> Shunt: 消息处理
@@ -25,7 +25,7 @@ Shunt --> Shunt: 消息处理
loop Read Loop
Client->Server:发送数据包
-abox right of Client: 数据包将被发送到连接对应分流渠道的无界缓冲区内
+abox right of Client: 数据包将被发送到连接对应分流渠道的缓冲区内
Server -->Shunt: (ShuntMessage) OnConnectionReceivePacketEvent
Shunt --> Shunt: 消息处理
Shunt --> Server: 回复消息