这个仓库包含了 MiMusic 的插件协议和示例插件,MiMusic 是一个用 Go 构建的轻量级音乐服务器。
MiMusic 支持通过基于 WASM 的插件扩展其功能。这个仓库提供了:
- 插件协议定义(Protocol Buffers)
- 插件开发基础API
- 示例实现,展示如何创建自定义插件
- 插件开发文档
插件协议使用 Protocol Buffers 在 plugin.proto 中定义。它定义了所有插件必须实现的接口。
插件系统的主要特性:
- 设备认证(支持多种认证方式)
- 远程设备音乐播放控制
- 基于 RPC 的可扩展通信
- 定时器管理
- 路由管理
插件开发基础API位于 api/plugin 目录中,提供了以下核心功能:
BasePlugin: 所有插件的基类,处理插件生命周期管理RegisterPlugin: 注册具体插件实现GetPluginId: 获取插件唯一标识符
TimerManager: 管理插件的定时器功能RegisterDelayTimer: 注册延迟定时器TimerCallback: 定时器回调函数类型
RouterManager: 管理插件的路由功能RegisterRouter: 注册HTTP路由RouterCallback: 路由回调函数类型
使用 gen.sh 脚本从 .proto 文件生成 Go 代码:
./gen.sh示例插件可以在单独的仓库中找到:
- mimusic-plugin-example:一个完整的示例,展示如何实现各种插件功能
有关开发自己的插件的详细说明,请参阅 mimusic-plugin-example 仓库。
本项目基于 Apache License 2.0 开源协议发布。