为了确保您的开发体验,建议您使用Apifox浏览器插件或客户端进行调试。
注意: 此端点实际为 WebSocket 协议( ws://),在 OpenAPI 中以 GET 方式描述。导入 Apifox 后请手动修改接口类型为 WebSocket。
统一事件格式: 所有 WebSocket 和 SSE 推送的消息均使用 {"type": "事件名", "player": "播放器名", "data": 载荷}格式。
所有事件无数据时data均为{}(空对象)。
下游客户端统一按msg.type分发,msg.player识别来源,msg.data读取载荷即可。
status_update - 状态更新{"type":"status_update","player":"wesing","data":{"status":"playing","detail":"告白 - 花澤香菜"}}{"type":"status_update","player":"wesing","data":{}}"waiting_process" - 播放器进程未启动"waiting_song" - 播放器已启动但未选择歌曲"loading" - 歌曲加载中,detail 为歌曲名称"playing" - 播放中,detail 为歌曲标题(格式: 歌曲名 - 歌手)"paused" - 暂停中(play_time 停止推进时自动检测),detail 为歌曲标题"standby" - 待机状态,播放器已退出song_info_update - 歌曲信息更新{"type":"song_info_update","player":"wesing","data":{"name":"告白","singer":"花澤香菜","title":"告白 - 花澤香菜","cover":"http://imgcache.qq.com/music/photo/mid_album_500/a/b/001aBcDe23FgHi.jpg","cover_base64":"data:image/jpeg;base64,/9j/4AAQSkZJRg..."}}{"type":"song_info_update","player":"wesing","data":{}}cover_base64 的 song_info_update(仅含 cover URL),待封面下载完成后再补发一条含 cover_base64 的完整版本。前端应使用最新收到的数据覆盖即可。lyric_update - 实时歌词更新{"type":"lyric_update","player":"wesing","data":{"line_index":5,"text":"君に嘘をついていた","sub_text":"","timestamp":9.0,"play_time":9.15,"progress":0.4167}}{"type":"lyric_update","player":"wesing","data":{}}all_lyrics - 完整歌词列表{"type":"all_lyrics","player":"wesing","data":{"song_title":"告白 - 花澤香菜","duration":236.0,"play_time":1.2,"count":12,"lyrics":[{"index":0,"time":0.5,"text":"いつもそばにいるのに"},{"index":1,"time":2.1,"text":"ふと気付くと遠すぎて"},{"index":2,"time":3.8,"text":"手を伸ばしても届かない"}]}}{"type":"all_lyrics","player":"wesing","data":{}}lyric_idle - 歌词空闲通知{"type":"lyric_idle","player":"wesing","data":{}}lyric_idle 为纯通知事件,data 始终为 {}。服务端不会发送清空歌词数据的消息,前端可自行决定是否响应。playback_pause - 暂停播放{"type":"playback_pause","player":"wesing","data":{"play_time":45.2}}playback_resume - 恢复播放{"type":"playback_resume","player":"wesing","data":{"play_time":45.2}}playback_pause 应停止时间插值,收到 playback_resume 应以 play_time 为锚点重新开始插值。player_switch - 播放器切换(仅根订阅者收到)/ws)会收到此事件:{"type":"player_switch","player":"cloudmusicv3","data":{"from":"wesing","to":"cloudmusicv3"}}player 字段为切换后的新播放器from - 切换前的播放器标识名to - 切换后的播放器标识名/wesing/ws)不会收到此事件status_update + song_info_update + all_lyrics + lyric_update 中已有的部分)(客户端连接根端点 /ws,当前活跃播放器为 wesing,尚无歌曲)
← {"type":"status_update","player":"wesing","data":{"status":"waiting_song","detail":"等待打开K歌窗口"}}
← {"type":"song_info_update","player":"wesing","data":{}}
← {"type":"lyric_update","player":"wesing","data":{}}
← {"type":"all_lyrics","player":"wesing","data":{}}
(wesing 开始播放歌曲A)
← {"type":"status_update","player":"wesing","data":{"status":"loading","detail":"有点甜"}}
← {"type":"status_update","player":"wesing","data":{"status":"playing","detail":"有点甜 - 汪苏泷/BY2"}}
← {"type":"song_info_update","player":"wesing","data":{"name":"有点甜","singer":"汪苏泷/BY2","title":"有点甜 - 汪苏泷/BY2","cover":"http://...","cover_base64":""}}
← {"type":"all_lyrics","player":"wesing","data":{"song_title":"有点甜 - 汪苏泷/BY2","duration":236.0,"play_time":0.5,"count":28,"lyrics":[...]}}
← {"type":"lyric_update","player":"wesing","data":{"line_index":0,"text":"男:摘一颗苹果","sub_text":"","timestamp":18.326,"play_time":18.15,"progress":0.05}}
← {"type":"song_info_update","player":"wesing","data":{"name":"有点甜","singer":"汪苏泷/BY2","title":"有点甜 - 汪苏泷/BY2","cover":"http://...","cover_base64":"data:image/jpeg;base64,..."}}
(cloudmusicv3 开始播放 — 触发播放器切换)
← {"type":"player_switch","player":"cloudmusicv3","data":{"from":"wesing","to":"cloudmusicv3"}}
← {"type":"status_update","player":"cloudmusicv3","data":{"status":"playing","detail":"如愿 - 王菲"}}
(用户暂停播放)
← {"type":"playback_pause","player":"cloudmusicv3","data":{"play_time":45.2}}
(用户恢复播放)
← {"type":"playback_resume","player":"cloudmusicv3","data":{"play_time":45.2}}
(歌曲播放完毕)
← {"type":"lyric_idle","player":"cloudmusicv3","data":{}}
(播放器退出)
← {"type":"status_update","player":"cloudmusicv3","data":{"status":"standby","detail":"播放器已退出"}}
← {"type":"status_update","player":"cloudmusicv3","data":{"status":"waiting_process","detail":"播放器未启动"}}