{"id":15103709,"url":"https://github.com/bettersupport/better-websocket","last_synced_at":"2025-04-05T12:26:40.130Z","repository":{"id":57732590,"uuid":"392153854","full_name":"bettersupport/better-websocket","owner":"bettersupport","description":"基于Netty的WebSocket实现，使用注解快速实现websocket服务。如果你发现项目有不足，欢迎加入，我们一起优化","archived":false,"fork":false,"pushed_at":"2021-08-10T09:19:10.000Z","size":65,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T23:51:12.484Z","etag":null,"topics":["netty","socket","spring-boot","websocket"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bettersupport.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-03T01:56:46.000Z","updated_at":"2021-08-19T01:44:42.000Z","dependencies_parsed_at":"2022-09-13T15:00:29.670Z","dependency_job_id":null,"html_url":"https://github.com/bettersupport/better-websocket","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bettersupport%2Fbetter-websocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bettersupport%2Fbetter-websocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bettersupport%2Fbetter-websocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bettersupport%2Fbetter-websocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bettersupport","download_url":"https://codeload.github.com/bettersupport/better-websocket/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247335565,"owners_count":20922457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["netty","socket","spring-boot","websocket"],"created_at":"2024-09-25T19:41:35.719Z","updated_at":"2025-04-05T12:26:40.104Z","avatar_url":"https://github.com/bettersupport.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# better-websocket\n基于Netty的WebSocket实现\n\n### 使用方法\n#### maven 引入\n```xml\n    \u003cdependency\u003e\n        \u003cgroupId\u003eio.github.bettersupport.websocket\u003c/groupId\u003e\n        \u003cartifactId\u003ebetter-websocket-core\u003c/artifactId\u003e\n        \u003cversion\u003e${version}\u003c/version\u003e\n    \u003c/dependency\u003e\n```\n\n#### yml配置\n```yaml\n# zookeeper单节点\nspring:\n  better:\n    websocket:\n      server:\n        # websocket服务启动端口 默认10000\n        serverPort: 10001\n        # childGroup数量 默认0\n        childGroupThreadNumber: 1000\n        # parentGroup数量 默认0\n        parentGroupThreadNumber: 0\n      connect:\n        # 路径前缀 默认 ''\n        pathPrefix: /websocket\n        # 消息最大长度 默认1MB\n        maxContentLength: 10MB\n        # 读取消息最大超时时间，单位ms，小于0不设置超时 默认60000ms\n        wsReadTimeout: 60000\n        # 写入消息最大超时时间，单位ms，小于0不设置超时 默认60000ms\n        wsWriteTimeout: 60000\n```\n\n#### 注解\n```java\n/**\n * 需开启@WebSocketMapScan({\"io.github.bettersupport.websocket.demo.endpoint\"})\n * 扫描包内的WebSocketMap\n * 如果pathPrefix设置的 /websocket\n * 此端点的访问路径为 /websocket/chat_online\n * 此类必须实现接口 WebSocketEndpointInterface\n * websocket地址上的参数可通过WebSocketSession.getParam获得\n * 发送消息可过sendMessage方法\n */\n@WebSocketMapping(\"/chat_online\")\npublic class ChatOnline implements WebSocketEndpointInterface {\n    private static final Logger log = LoggerFactory.getLogger(ChatOnline.class);\n\n    /**\n     * 连接打开\n     * @param session 连接会话（包含参数等对象）\n     */\n    @Override\n    public void onOpen(WebSocketSession session) {\n        log.info(\"onOpen({}) {}\", session, JSONObject.toJSONString(session));\n    }\n\n    /**\n     * 收到消息\n     * @param session 连接会话（包含参数等对象）\n     * @param message 消息内容\n     */\n    @Override\n    public void onMessage(WebSocketSession session, String message) {\n        log.info(\"onMessage({}) {} \\n[{}]\", session, JSONObject.toJSONString(session), message);\n        // 发送消息\n        sendMessage(session, \"chat_online: \" + message);\n    }\n\n    /**\n     * 连接关闭\n     * @param session 连接会话（包含参数等对象）\n     */\n    @Override\n    public void onClose(WebSocketSession session) {\n        log.info(\"onClose({}) {}\", session, JSONObject.toJSONString(session));\n    }\n\n    /**\n     * 连接异常\n     * @param session 连接会话（包含参数等对象）\n     * @param t 异常\n     */\n    @Override\n    public void onError(WebSocketSession session, Throwable t) {\n        log.error(\"onError({}) {} | {}\", session, JSONObject.toJSONString(session), Throwables.getStackTraceAsString(t));\n    }\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbettersupport%2Fbetter-websocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbettersupport%2Fbetter-websocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbettersupport%2Fbetter-websocket/lists"}