{"id":29832518,"url":"https://github.com/codingapi/sdk-starter-okx-websocket","last_synced_at":"2025-07-29T11:37:27.588Z","repository":{"id":306387274,"uuid":"1026011415","full_name":"codingapi/sdk-starter-okx-websocket","owner":"codingapi","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-25T07:02:37.000Z","size":88,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-25T12:10:13.163Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/codingapi.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-25T07:01:34.000Z","updated_at":"2025-07-25T07:02:03.000Z","dependencies_parsed_at":"2025-07-25T12:11:24.694Z","dependency_job_id":"e3279ca3-af87-4f23-985f-b21ef62b4893","html_url":"https://github.com/codingapi/sdk-starter-okx-websocket","commit_stats":null,"previous_names":["codingapi/sdk-starter-okx-websocket"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/codingapi/sdk-starter-okx-websocket","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingapi%2Fsdk-starter-okx-websocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingapi%2Fsdk-starter-okx-websocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingapi%2Fsdk-starter-okx-websocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingapi%2Fsdk-starter-okx-websocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codingapi","download_url":"https://codeload.github.com/codingapi/sdk-starter-okx-websocket/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingapi%2Fsdk-starter-okx-websocket/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267678468,"owners_count":24126338,"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","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-07-29T11:36:31.010Z","updated_at":"2025-07-29T11:37:27.579Z","avatar_url":"https://github.com/codingapi.png","language":"Java","readme":"[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/codingapi/sdk-starter-okx-websocket/blob/main/LICENSE)\n[![Maven Central](https://img.shields.io/maven-central/v/com.codingapi.sdk/starter-okx-websocket.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22com.codingapi.sdk%22%20AND%20a:%22starter-okx-websocket%22)\n\n# sdk-starter-okx-websocket\n\n基于OKX v5 websocket api开发的springboot的OKX-websocket-SDK starter  \n[OKX API](https://www.okx.com/docs-v5/zh/#websocket-api)\n\nwebsocket 将会建立两个链接，分别是私有通道与共有通道  \n目前框架再启动以后会推送两种事件：  \n1. ServerConnectedEvent\n2. LoginSucceededEvent\n\nServerConnectedEvent是无论共有还是私有都会推送的事件，因此在订阅的时候注意区分。可通过event.isPrivateChannel()判断。  \nLoginSucceededEvent是尽在私有通道下才会推送的事件。  \n\n## 使用步骤\n\n* maven依赖\n```\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.codingapi.sdk\u003c/groupId\u003e\n        \u003cartifactId\u003estarter-okx-websocket\u003c/artifactId\u003e\n        \u003cversion\u003e${last.version}\u003c/version\u003e\n    \u003c/dependency\u003e\n```\n* 配置OKX APIKEY\n```\n\n# OKX api 参数配置\n\ncodingapi.okx.config.apikey=xxx\ncodingapi.okx.config.secret-key=xxx\ncodingapi.okx.config.passphrase=xxx\ncodingapi.okx.config.mock=true\ncodingapi.okx.config.socket-private-url=wss://wspap.okx.com:8443/ws/v5/private?brokerId=9999\ncodingapi.okx.config.socket-public-url=wss://wspap.okx.com:8443/ws/v5/public?brokerId=9999\n\n```\n\n* SDK使用 \n```\n\nimport com.codingapi.sdk.okx.websocket.event.ServerConnectedEvent;\nimport com.codingapi.sdk.okx.websocket.protocol.command.SubscribeCommand;\nimport com.codingapi.sdk.okx.websocket.sender.PublicCommandPusher;\nimport com.codingapi.sdk.okx.websocket.sender.TriggerMessage;\nimport com.codingapi.springboot.framework.handler.IHandler;\nimport com.codingapi.springboot.framework.trigger.TriggerHandler;\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.stereotype.Component;\n\n@Slf4j\n@Component\npublic class MySubscribeHandler implements IHandler\u003cServerConnectedEvent\u003e {\n\n    private static class MyTradeTrigger implements TriggerHandler\u003cTriggerMessage\u003e {\n        @Override\n        public boolean preTrigger(TriggerMessage trigger) {\n            //触发器进入的条件判断\n            return trigger.isAction(\"channel\",\"trades\");\n        }\n\n        @Override\n        public void trigger(TriggerMessage trigger) {\n            //触发以后的执行逻辑\n            log.info(\"trades:{}\",trigger.getMsg());\n        }\n\n        @Override\n        public boolean remove(TriggerMessage trigger, boolean canTrigger) {\n            //仅当执行过程Trigger才会被移除\n            return canTrigger;\n        }\n    }\n\n    private final SubscribeCommand tradeCommand = new SubscribeCommand(\"trades\",\"BTC-USDT\");\n\n    private final MyTradeTrigger tradeTrigger = new MyTradeTrigger();\n\n\n    @Override\n    public void handler(ServerConnectedEvent event) {\n        //是否私有通道\n        if(!event.isPrivateChannel()) {\n            // tradeCommand 为发送的数据包\n            // tradeTrigger 是消息返回以后触发的触发器\n            PublicCommandPusher.send(tradeCommand, tradeTrigger);\n        }\n    }\n}\n\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingapi%2Fsdk-starter-okx-websocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodingapi%2Fsdk-starter-okx-websocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingapi%2Fsdk-starter-okx-websocket/lists"}