{"id":28959576,"url":"https://github.com/agoraio-extensions/agora-rtm-server-sdk-go","last_synced_at":"2025-06-24T00:03:02.954Z","repository":{"id":288393103,"uuid":"967431338","full_name":"AgoraIO-Extensions/Agora-RTM-Server-SDK-Go","owner":"AgoraIO-Extensions","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-09T09:42:41.000Z","size":22039,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-09T10:40:20.474Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/AgoraIO-Extensions.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,"zenodo":null}},"created_at":"2025-04-16T12:53:09.000Z","updated_at":"2025-05-09T09:40:02.000Z","dependencies_parsed_at":"2025-05-09T10:34:34.996Z","dependency_job_id":"789f91cc-2926-478a-b57b-037755ffdbe6","html_url":"https://github.com/AgoraIO-Extensions/Agora-RTM-Server-SDK-Go","commit_stats":null,"previous_names":["agoraio-extensions/agora-rtm-server-sdk-go"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/AgoraIO-Extensions/Agora-RTM-Server-SDK-Go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgoraIO-Extensions%2FAgora-RTM-Server-SDK-Go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgoraIO-Extensions%2FAgora-RTM-Server-SDK-Go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgoraIO-Extensions%2FAgora-RTM-Server-SDK-Go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgoraIO-Extensions%2FAgora-RTM-Server-SDK-Go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AgoraIO-Extensions","download_url":"https://codeload.github.com/AgoraIO-Extensions/Agora-RTM-Server-SDK-Go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AgoraIO-Extensions%2FAgora-RTM-Server-SDK-Go/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261577973,"owners_count":23179766,"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":[],"created_at":"2025-06-24T00:02:15.734Z","updated_at":"2025-06-24T00:03:02.930Z","avatar_url":"https://github.com/AgoraIO-Extensions.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# agora-rtm-sdk go\n\n支持的os：\nlinux + mac\n\n备注： mac下建议只做为开发环境，不做运行环境\n\n使用事项：\n[x]不要在回调函数中，调用sdk的api\n[x]不要在回调中，做耗时的操作\n\n\n需要设置：\n在项目目录下面：\nfor Linux:\nexport LD_LIBRARY_PATH=./third_party/agora_rtm_sdk_c/\nfor mac:\nexport DYLD_LIBRARY_PATH=./third_party/agora_rtm_sdk_c/\n\n编译过程：\n手动编译：\ngo build -o ./bin/ ./cmd/example/\n\n脚本编译：\n./scripts/build.sh\n\n执行: \n./bin/example \u003cappid\u003e \u003cchannelname\u003e \u003cusid\u003e \u003ctoken_option\u003e\n\n版本历史记录：\n20250428 release 0.0.4\n-- 更新：更新rtm 版本到2.2.4.1\n-- 修改：修改mac 的LDflags，fix mac下编译错误\n20250424 release 0.0.3\n-- Add:\n   - 增加对mac的支持\n\n\n20250424 release 0.0.2\n\n## RTM SDK Version\n\nThe RTM SDK version has been updated from 2.1.x to 2.2.x.\n\n## Library Files\n\nThe library files have been updated to use `.so` files instead of `.a` files.\n\n## Library File Location\n\nAll `.so` files are now located in a single directory.\n## add 8 callback for logout etc\n## add pushmessage in demo to do like echo server\n## add chan in demo to get time for each step\n\n最佳实践\n1、释放顺序\n   - 先释放client，再释放channel\n2、回调中，不要调用sdk的api，否则会引起多次销毁\n3、回调中，不要做耗时的操作，否则会引起阻塞\n4 configure 最后释放\n\n\n\n\nTodo list\n-[]回调中，缺少logout的callback\n-[]cmd/sample中需要做释放\n-[]需要做pprof测试，\n   -[]验证cpu、内存耗费\n   -[]验证释放有内存泄漏？\n-[] 需要修改rtmclient的对象，变更为go中的对象，否则会引起多次销毁\n-[] 对mac的支持\n-[] 所有的void 都用handle来定义，不要定义各种不同的c_Ixx ,太难理解了\n-[] eventhandler: 需要提供一个unreg 方法，或者就是在client的logout的时候，自动来处理？？需要查看rtm c++是否有unreg event handler\n\n- [x] 将github 去掉，或者是替换为agora io，看看是否能编译通过？\n- [x] 包命令为agrtm\n- [x] 将bridge 迁移到agora，不需要bridage，并修改main.go\n- [x] 修改scripts下面的build.sh\n- [x] 将目录结构做改变，不用那么复杂。更新后的目录结构为：\n\n1. 整体结构符合 Go 标准项目布局：\n   - `cmd/`: 存放主要的应用程序入口，也就是sample 的目录\n   - `pkg/`: 存放可以被外部应用程序使用的库代码，也就是rtm的go实现代码\n   - `third_party/`: 存放agora_rtm_sdk有关的include和lib文件。其中:\n        - `agora_rtm_sdk_c/`：存放的是c api 的include 和.a 文件\n        - `agora_rtm_sdk_c/agora_rtm_sdk/`：存放的是rtm_sdk 有关的highlevel API和so文件\n   - `scripts/`: 存放构建和部署脚本\n   - `bin/`: 存放编译后的可执行文件\n\n2. 主要组件：\n   - `cmd/example/`: 示例应用程序\n   - `pkg/agora/`: Agora RTM SDK 的核心实现\n   - `third_party/agora_rtm_sdk_c/`: C 语言版本的 Agora RTM SDK\n\n3. 代码组织特点：\n   - 接口和实现分离：`pkg/agora/` 目录下的文件都以 `I` 开头表示接口\n   - 功能模块化：将不同功能（如 Client、Service、Storage 等）分离到不同文件\n   - 清晰的依赖关系：通过 `third_party` 目录管理外部依赖\n\n4. 构建系统：\n   - 使用 `go.mod` 进行依赖管理\n   - 使用 `scripts/build.sh` 进行构建\n   - 输出目录为 `bin/`\n\n5. 文档：\n   - `README.md` 提供项目说明\n\n\n\n建议改进：\n1. 可以添加 `internal/` 目录存放私有代码\n2. 可以添加 `api/` 目录存放 API 定义\n3. 可以添加 `test/` 目录存放测试代码\n4. 可以添加 `docs/` 目录存放详细文档\n5. 可以添加 `configs/` 目录存放配置文件模板\n\n这个项目结构是一个典型的 Go 项目，遵循了 Go 社区的最佳实践，适合作为其他 Go 项目的参考。\n\n- [ ] 在c api工程中，更新c API的命名规范，更新为agora_rtm_xxx_，\n\n- [ ] c api命名规范更新后，更新go 中的对应c api","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagoraio-extensions%2Fagora-rtm-server-sdk-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagoraio-extensions%2Fagora-rtm-server-sdk-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagoraio-extensions%2Fagora-rtm-server-sdk-go/lists"}