多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 说明 发送消息以及接受消息都是通过这个类的说明。具体的消息分类在另一篇文档中有详细的说明,这里只是说明下配置的发送和转换的入口位置。 - 白板项目的消息类型文档:[https://www.kancloud.cn/melot/melot-white-board/1165811](https://www.kancloud.cn/melot/melot-white-board/1165811) ## 类文件定义 /ws/libs/message.js,websocket的实例化message的过程,Message.instance.init()。 ## 具体可选字段定义 /ws/proto/index.proto,类型定义文件,这里直接定义了大部分的二类消息,其他的二类消息在单独的文件中维护。 ### template 定义在page.proto 其中模板消息的相关配置在page.proto,在信令消息的模板中我们能够看到这几个可选参数包括connection/choice/dice/wheel/free几种对应题型,也可以看到必填参数pageType的使用与传参。 ``` message TemplateMessage{ enum PageType{ CONNECTION = 0; } required PageType type = 0; optional ConnectionProblem connection = 1; optional ChoiceProblem choice = 2; optional DiceProblem dice = 3; optional WheelProblem wheel = 4; optional FreeProblem free = 5; } ``` 而在具体的每个消息类型中会定义需要传参的部分,其中最重要的是payload字段,可以看到这里大多数的设置是string字段,所以在消息中都需要进行JSON.stringfy进行一次转换。 ``` message ConnectionProblem{ required string type = 0; optional string payload = 1; } message ChoiceProblem{ optional string payload = 0; } message DiceProblem{ optional string payload = 0; } message WheelProblem{ optional string payload = 0; } message FreeProblem{ required string type = 0; optional string payload = 1; } ``` ### media.proto media.proto 中定义了媒体消息的字段说明,其可能的媒体状态传值都在下面的枚举中。 ``` message MediaEvent{ optional string objectId = 1; enum MediaState{ START = 0; PAUSE = 1; STOP = 2; RESTART = 3; GO_TO = 4; PLAY_END = 5; VOLUME = 6; } required MediaState state = 2; optional string payload = 3; } message SyncMediaEvent{ optional string objectId = 0; optional bool paused = 1; optional float position = 2; optional float volume = 3; } ``` ## 发送消息 ## 接受转发消息