-
Notifications
You must be signed in to change notification settings - Fork 17
avim 基础协议设计 #1
Comments
avim-base-protocol 的目的是为上层的 聊天协议提供一个坚实的基础 avim-base-protocol 类似于一个 "高可靠性的UDP协议", 每一个 avim-server 都是一个网关. 消息以 block 为单位进行传送. block 的大小没有任何硬性限制. 目前的服务器端软件可能会采取将 block 大小限制到 1MB 以内 诸如此类的做法. 支持多播, 也就是可以填写多个目的地址. |
协议如下: message avim-base-packet{ message avid{ message avblock{ |
avblock 应该也允许 repeated 吧, 一次发送多个 avblock ? |
应该再添加一个 string application 表明上层协议 |
看了下下,很OK |
觉得是时候讨论具体功能了,那样能产生更加详细的协议 |
avPacket是不是应该加上类型?比如图片?或者图片嵌入msgblock中?感觉嵌入不太好,因为我们要发送诸如字体定义等其它属性 |
不不不, avim-base 协议只是一个 “可靠性的 UDP”. 具体的 avim 聊天协议要构建在这个协议之上。 现在先设计这个基础协议 |
// 这个文件是 avim base 协议的 protobuf 定义. 使用 protoc 编译为对应的 C++ 代码 // 基础的AV地址, AVID 就是这个庞大的路由网络的地址标识 // 基础包
} // 由和消息无关的控制消息,由服务器和服务之间传递,或则客户端和服务器之间的传递
} message avPacketMessage{ message avPacketMessageReplay{
} |
应该差不多可以了吧? |
确实差不多了 |
@Jackarain @hyqhyq3 @peterfuture
经过 avplayer.org 社区讨论, 现在归纳 avim 的设计报告如下:
avim 设计为 * 一个分布式的即时消息传递框架 * , 主要用途用于构建 即时通讯软件.
avim 为每一个消息接受端分配一个全球唯一标识符, 由 AVID 表示, 形式为
user@domain/resource
avim 使用域将消息接受端进行划分. 每一个域下需要一台到多台 avim 服务器端.
avim 服务器端执行的是 "消息的准确传递" . 如果目的客户不存在(暂时不可达), 服务器端要负责对消息进行离线存储. 等客户上线后再行转发. 对消息进行离线存储由目的用户所在的服务器负责.
avim 的消息可靠性到达机制, 被用来构建 avplayer 社区规划中的下一代即时通讯软件: avim (与协议同名)
avim 使用 avim 的消息可靠性到达机制传递 文本/图像/声音/视频 消息.
The text was updated successfully, but these errors were encountered: