Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Data-Stream updates to RTM2 #28

Open
cyfyifanchen opened this issue Jun 26, 2024 · 7 comments
Open

[Feature Request] Data-Stream updates to RTM2 #28

cyfyifanchen opened this issue Jun 26, 2024 · 7 comments
Labels
enhancement New feature or request question Further information is requested
Milestone

Comments

@cyfyifanchen
Copy link
Collaborator

No description provided.

@cyfyifanchen cyfyifanchen added the enhancement New feature or request label Jun 26, 2024
@cyfyifanchen cyfyifanchen added this to the Lepnard milestone Jun 26, 2024
@cyfyifanchen
Copy link
Collaborator Author

@Lensual

@Lensual
Copy link
Contributor

Lensual commented Jul 4, 2024

对于 go 语言集成 Agora RTM/RTC 的一些问题需要讨论和确定

  1. 目前 Agora RTM SDK 只有 x86_64 架构支持
  2. 目前 Agora RTC SDK 有 arm64 架构支持,但略微小于 x86_64 架构的版本
  3. 引入 cgo 导致对现有的 CI/CD 、脚本及文档 的破坏
  4. 构建过程、调试过程、运行过程更复杂,需要设置 CGO_CFLAGSCGO_LDFLAGSLD_LIBRARY_PATH 等参数
  5. 大量 unsafe 、指针类型强制转换、非托管内存的使用,代码可靠性降低

@cyfyifanchen
Copy link
Collaborator Author

Good research, let's look into it.

@cyfyifanchen cyfyifanchen added the question Further information is requested label Jul 4, 2024
@halajohn
Copy link
Member

halajohn commented Jul 4, 2024

對於 go 語言整合 Agora RTM/RTC 的一些問題需要討論和確定

  1. 目前 Agora RTM SDK 只有 x86_64 架構支援
  2. 目前 Agora RTC SDK 有 arm64 架構支援, 但略微小於 x86_64 架構的版本

RTC/RTM SDK 有其他的 arch 支持, 有需求的话, 可以看怎么满足.

  1. 引入 cgo 導致對現有的 CI/CD , 指令碼及文件 的破壞
  2. 建構過程, 偵錯過程, 運行過程更複雜, 需要設定 CGO_CFLAGS, CGO_LDFLAGS, LD_LIBRARY_PATH 等參數
  3. 大量 unsafe , 指針類型強制轉換, 非託管記憶體的使用, 程式碼可靠性降低

以上三点是同一件事, 只要想把 C/C++ codes 引入到 go, 那势必引入 cgo. 引入 cgo 势必需要处理 CGO_xxx 这些参数以及代码的复杂性, 这些是写 cgo 下原本需要处理的事情, 因此触碰到 cgo 是 go programming 里面比较进阶的一环.

感觉你的想法会有两种作法:

1 extension

用 go 开发一个 ASTRA extension, 内含 C/C++ 的 SDK => 这个会需要开发者自行处理 cgo 的部份, 至少包含原 post 中的最后这三个复杂性需要开发者自行处理.

2 extensions

  1. 用 C++ 开发一个 ASTRA extension, 内含 C++ 的 SDK => 纯 C++ 开发, 甚至不需要包 C wrapper, 就直接纯 C++ 开发即可.

  2. 用 go 开发另一个 ASTRA extension, 内含纯用 go 写的 "业务" 代码, 不涉及任何的 cgo.

而这两个 ASTRA extension 之间透过 ASTRA 的 interface 交互即可, 原本 1 extension 想要达到的功能, 2 extensions 都可以达到. 相当于 cgo 的所有复杂性, performance handling, 多语言的安全交互等等, 全由 ASTRA 完成.

@cyfyifanchen
Copy link
Collaborator Author

这么好的讨论不如直接 convert 过去。

@Lensual
Copy link
Contributor

Lensual commented Jul 9, 2024

我需要了解下如何开发 ASTRA extension

#76

@Lensual
Copy link
Contributor

Lensual commented Jul 9, 2024

现有的 Agora RTC extension 已经实现了使用声网的信道传输text_data,新增 RTM2 extension 对于目前来说似乎没有太大意义,但可以作为一种额外的数据接入方式来丰富生态

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
No open projects
Status: Todo
Development

No branches or pull requests

3 participants