From cbfa3fcbdc484236aeaa939ea0769be3d28e25b9 Mon Sep 17 00:00:00 2001 From: xRain Date: Tue, 25 Aug 2026 12:03:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BA=90=E6=96=87=E4=BB=B6=E5=90=8D=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E6=94=B9=E4=B8=BA=E8=9B=87=E5=BD=A2=E5=91=BD=E5=90=8D?= =?UTF-8?q?=EF=BC=8Cpublic=20=E7=B1=BB=E5=9E=8B=E5=90=8D=E4=B8=8E=20import?= =?UTF-8?q?=20=E8=B7=AF=E5=BE=84=E4=B8=8D=E5=8F=98=EF=BC=9BREADME=20?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84=E5=90=8C=E6=AD=A5=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=9B=E7=89=88=E6=9C=AC=E5=8D=87=E7=BA=A7=201.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 +++++++------- cjpm.toml | 2 +- .../{WebSocketClient.cj => websocket_client.cj} | 0 src/common/{FrameStream.cj => frame_stream.cj} | 0 src/common/{WsTypes.cj => ws_types.cj} | 0 ...IWebsocketHandler.cj => i_websocket_handler.cj} | 0 ...SocketConnection.cj => websocket_connection.cj} | 0 .../{WebSocketSenders.cj => websocket_senders.cj} | 0 .../{WebSocketServer.cj => websocket_server.cj} | 5 +++++ 9 files changed, 13 insertions(+), 8 deletions(-) rename src/client/{WebSocketClient.cj => websocket_client.cj} (100%) rename src/common/{FrameStream.cj => frame_stream.cj} (100%) rename src/common/{WsTypes.cj => ws_types.cj} (100%) rename src/server/{IWebsocketHandler.cj => i_websocket_handler.cj} (100%) rename src/server/{WebSocketConnection.cj => websocket_connection.cj} (100%) rename src/server/{WebSocketSenders.cj => websocket_senders.cj} (100%) rename src/server/{WebSocketServer.cj => websocket_server.cj} (98%) diff --git a/README.md b/README.md index 0ee6688..e6558f4 100644 --- a/README.md +++ b/README.md @@ -40,15 +40,15 @@ import simcu::websocket.common.WebSocketMessage src/ ├── websocket.cj # 模块锚点 ├── common/ -│ ├── WsTypes.cj # WebSocketMessage / ReadyState / WebSocketException / CloseCodes / WsEvents -│ └── FrameStream.cj # RFC 6455 帧层(握手工具、掩码、分片重组、maxPayload) +│ ├── ws_types.cj # WebSocketMessage / ReadyState / WebSocketException / CloseCodes / WsEvents +│ └── frame_stream.cj # RFC 6455 帧层(握手工具、掩码、分片重组、maxPayload) ├── client/ -│ └── WebSocketClient.cj # 客户端 +│ └── websocket_client.cj # 客户端 ├── server/ -│ ├── IWebsocketHandler.cj # 服务端 handler 接口(onConnect/onMessage/onClose/onError) -│ ├── WebSocketServer.cj # 监听 / 握手 / 按路径路由 / 广播 / 组存储 -│ ├── WebSocketSenders.cj # 链式门面(组管理 + 组播/单播发送的实现) -│ └── WebSocketConnection.cj # 服务端单条连接 +│ ├── i_websocket_handler.cj # 服务端 handler 接口(onConnect/onMessage/onClose/onError) +│ ├── websocket_server.cj # 监听 / 握手 / 按路径路由 / 广播 / 组存储 +│ ├── websocket_senders.cj # 链式门面(组管理 + 组播/单播发送的实现) +│ └── websocket_connection.cj # 服务端单条连接 └── tests/ └── websocket_test.cj # 端到端集成测试 ``` diff --git a/cjpm.toml b/cjpm.toml index e9d21f3..eaf58bf 100644 --- a/cjpm.toml +++ b/cjpm.toml @@ -3,7 +3,7 @@ cjc-version = "1.1.3" name = "websocket" organization = "simcu" description = "SimApi WebSocket 库(RFC 6455):事件回调式客户端与接口式服务端。客户端 connect/send(三重重载)/ping/close/terminate + onOpen/onMessage/onError/onClose;服务端 WebSocketServer(port) + addHandler(path, factory) 按路径路由、每连接独立 handler,链式门面 group(name)/conn(connId) 支持组管理/组播/单播/广播,连接断开自动清组" -version = "1.1.0" +version = "1.2.0" target-dir = "" output-type = "static" diff --git a/src/client/WebSocketClient.cj b/src/client/websocket_client.cj similarity index 100% rename from src/client/WebSocketClient.cj rename to src/client/websocket_client.cj diff --git a/src/common/FrameStream.cj b/src/common/frame_stream.cj similarity index 100% rename from src/common/FrameStream.cj rename to src/common/frame_stream.cj diff --git a/src/common/WsTypes.cj b/src/common/ws_types.cj similarity index 100% rename from src/common/WsTypes.cj rename to src/common/ws_types.cj diff --git a/src/server/IWebsocketHandler.cj b/src/server/i_websocket_handler.cj similarity index 100% rename from src/server/IWebsocketHandler.cj rename to src/server/i_websocket_handler.cj diff --git a/src/server/WebSocketConnection.cj b/src/server/websocket_connection.cj similarity index 100% rename from src/server/WebSocketConnection.cj rename to src/server/websocket_connection.cj diff --git a/src/server/WebSocketSenders.cj b/src/server/websocket_senders.cj similarity index 100% rename from src/server/WebSocketSenders.cj rename to src/server/websocket_senders.cj diff --git a/src/server/WebSocketServer.cj b/src/server/websocket_server.cj similarity index 98% rename from src/server/WebSocketServer.cj rename to src/server/websocket_server.cj index 5bfc120..12a6d42 100644 --- a/src/server/WebSocketServer.cj +++ b/src/server/websocket_server.cj @@ -64,6 +64,11 @@ public class WebSocketServer { s.bind() serverSock = Some(s) running = true + var paths = "" + for (p in pathFactories.keys()) { + paths = if (paths.isEmpty()) { p } else { "${paths}, ${p}" } + } + println("[websocket] 已监听 端口=${localPort} 端点=[${paths}]") spawn { => acceptLoop() } }