{"id":21690101,"url":"https://github.com/cdnbye/cbsignal","last_synced_at":"2025-04-12T09:35:41.335Z","repository":{"id":96323291,"uuid":"228413989","full_name":"cdnbye/cbsignal","owner":"cdnbye","description":"The official signaling server for CDNBye SDKs","archived":false,"fork":false,"pushed_at":"2023-02-25T09:10:37.000Z","size":9370,"stargazers_count":14,"open_issues_count":1,"forks_count":18,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T04:34:06.988Z","etag":null,"topics":["cdnbye","golang","hls","m3u8","p2p","signal"],"latest_commit_sha":null,"homepage":"https://www.cdnbye.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdnbye.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2019-12-16T15:11:46.000Z","updated_at":"2022-08-29T17:02:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"e65cd379-0ec9-4e48-8f89-f12175c29850","html_url":"https://github.com/cdnbye/cbsignal","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdnbye%2Fcbsignal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdnbye%2Fcbsignal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdnbye%2Fcbsignal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdnbye%2Fcbsignal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdnbye","download_url":"https://codeload.github.com/cdnbye/cbsignal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248546806,"owners_count":21122385,"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":["cdnbye","golang","hls","m3u8","p2p","signal"],"created_at":"2024-11-25T17:29:06.400Z","updated_at":"2025-04-12T09:35:41.327Z","avatar_url":"https://github.com/cdnbye.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\r\n### build\r\nMake sure that the golang development environment is installed\r\n```bash\r\ngit clone https://github.com/cdnbye/cbsignal.git\r\ncd cbsignal\r\nmake\r\n```\r\nor directly use compiled linux file [cbsignal](https://github.com/cdnbye/cbsignal/releases) .\r\n\r\n### deploy\r\nUpload binary file, admin.sh and config.yaml to server, create `cert` directory with `signaler.pem` and `signaler.key`, then start service:\r\n```bash\r\nchmod +x admin.sh\r\nsudo ./admin.sh start\r\n```\r\n\r\n### test\r\n```\r\nimport Hls from 'cdnbye';\r\nvar hlsjsConfig = {\r\n    p2pConfig: {\r\n        wsSignalerAddr: 'ws://YOUR_SIGNAL',\r\n        // Other p2pConfig options provided by hlsjs-p2p-engine\r\n    }\r\n};\r\n// Hls constructor is overriden by included bundle\r\nvar hls = new Hls(hlsjsConfig);\r\n// Use `hls` just like the usual hls.js ...\r\n```\r\n\r\n### Get real-time information of signal service\r\n```\r\nGET /info\r\n```\r\nResponse:\r\n```\r\nStatus: 200\r\n\r\n{\r\n  \"ret\": 0,\r\n  \"data\": {\r\n      \"version\"\r\n      \"current_connections\"\r\n      \"cluster_mode\"\r\n      \"num_goroutine\"\r\n      \"num_per_map\"\r\n  }\r\n}\r\n```\r\n\r\n### Cluster Mode\r\nRPC is used to communicate between all nodes. Specify master IP in `config_cluster.yaml`, then  start service:\r\n```bash\r\nsudo ./admin.sh start cluster config_cluster.yaml\r\n``` \r\n\r\n## Related projects\r\n* [cbsignal_node](https://github.com/cdnbye/cbsignal_node) - High performance CDNBye signaling service written in node.js\r\n\r\n### go语言版的 CDNBye 信令服务器，可用于Web、安卓、iOS SDK等所有CDNBye产品\r\n#### 编译二进制文件\r\n请先确保已安装golang开发环境\r\n```bash\r\ngit clone https://github.com/cdnbye/cbsignal.git\r\ncd cbsignal\r\nmake\r\n```\r\n或者直接使用已经编译好的linux可执行文件 [cbsignal](https://github.com/cdnbye/cbsignal/releases)\r\n\r\n#### 部署\r\n将编译生成的二进制文件、admin.sh和config.yaml上传至服务器，并在同级目录创建`cert`文件夹，将证书和秘钥文件分别改名为`signaler.pem`和`signaler.key`放入cert，之后启动服务：\r\n```bash\r\nchmod +x admin.sh\r\necho -17 \u003e /proc/$(pidof cbsignal)/oom_adj     # 防止进程被OOM killer杀死\r\nsudo ./admin.sh start\r\n```\r\n\r\n### 测试\r\n```\r\nimport Hls from 'cdnbye';\r\nvar hlsjsConfig = {\r\n    p2pConfig: {\r\n        wsSignalerAddr: 'ws://YOUR_SIGNAL',\r\n        // Other p2pConfig options provided by hlsjs-p2p-engine\r\n    }\r\n};\r\n// Hls constructor is overriden by included bundle\r\nvar hls = new Hls(hlsjsConfig);\r\n// Use `hls` just like the usual hls.js ...\r\n```\r\n\r\n### 通过API获取信令服务的实时信息\r\n```\r\nGET /info\r\n```\r\n响应:\r\n```\r\nStatus: 200\r\n\r\n{\r\n  \"ret\": 0,\r\n  \"data\": {\r\n      \"version\"\r\n      \"current_connections\"\r\n      \"cluster_mode\"\r\n      \"num_goroutine\"\r\n      \"num_per_map\"\r\n  }\r\n}\r\n```\r\n\r\n### 集群模式\r\n节点之间采用RPC进行通信，首先在 `config_cluster.yaml` 中指定master节点的内网IP, 然后启动服务：\r\n```bash\r\nsudo ./admin.sh start cluster config_cluster.yaml\r\n``` \r\n\r\n## 相关项目\r\n* [cbsignal_node](https://github.com/cdnbye/cbsignal_node) - 基于node.js开发的高性能CDNBye信令服务\r\n\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdnbye%2Fcbsignal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdnbye%2Fcbsignal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdnbye%2Fcbsignal/lists"}