平时听歌,习惯基本是固定的:打开某个歌单——要么是自己攒的,要么是首页推荐的——然后点播放,一个人戴着耳机听完。挺好,但也总觉得少了点什么。
前段时间突然想到:听歌这件事其实很适合「一起」做。以前宿舍里一个人放歌全屋一起听,或者朋友之间互相安利「这首你必须听一下」,那种边听边聊、你一首我一首的感觉,是一个人刷歌单给不了的。于是就折腾了这么个东西出来——一个可以多人同房、同一时间听同一首歌的网站。
服务端有个权威时钟统一控制播放进度,谁进来都会自动对齐到当前播放位置,大家听到的永远是同一秒,不会各放各的。一首放完自动切下一首,人多的时候还能投票切歌。
重点说下点歌,这块是我花心思比较多的地方,做了两种方式:
1. 智能点歌
不用一首一首去搜,直接用大白话描述你想听什么就行,比如:
- 「随机点 20 首」
- 「点几首邓紫棋的歌」
- 「来几首适合深夜听的华语歌」
后台会理解你的意图(随机 / 指定歌手 / 按风格场景搜索),然后给你一批候选歌曲,你勾选确认后一起加进队列。想听某个歌手某个年份之后的歌也行,描述清楚就能筛。适合那种「我就想听点什么,但懒得想具体是哪首」的场景。
2. 歌单点歌
如果你本来就有攒好的网易云歌单,可以直接输入网易云的昵称或用户 ID ,把某人的公开歌单整个拉出来,然后勾选想要的、或者干脆全选一键加入队列。自己的日推、收藏、私藏歌单都能直接搬进房间和大家分享,省得一首首复述。
其他还有房间聊天、在线人数、随机跳到「下一个房间」串门这些小功能,就不展开了。
整个东西是用 Next.js + Socket.io 写的,音乐源接的网易云。目前还比较简陋,欢迎来玩、来点歌、来吐槽:
