Giter VIP home page Giter VIP logo

syncmusic's Introduction

SyncMusic

🎵 PHP Swoole 开发的在线同步点歌台,支持自由点歌,切歌,调整排序,删除指定音乐以及基础权限分级

img

代码写了很详细的注释,非常适合新人学习 PHP WebSocket 应用程序开发。

功能特性

  • 支持在线点歌
  • 支持多人实时聊天
  • 支持投票切掉当前音乐
  • 管理员可切歌
  • 管理员可删除指定音乐
  • 管理员可将指定音乐提前播放
  • 管理员可禁言指定用户
  • 美观的界面 (Material Design)
  • 无需登录,任何人都可以点歌
  • 无需数据库,由 Swoole 内存表储存数据

有个地方就是获取音乐时间长度是用了 python,原本我是想直接用 PHP 来获取的,但是有点麻烦,还要导入一个单独的库,想了想还是用最简单的办法来解决,于是就用 python 整了个简单的脚本。

如果你有更好的读取音乐时间的实现方法,欢迎提 pr 或通过 issues 告诉我。

安装教程

请访问 Wiki 页面:Installation

如果安装时遇到问题,可以通过 Issues 提问。

在线预览

ZeroDream:Akkariin 点歌台

如果你想将你的点歌台列在这里,请开一个 Issues 并写上你的点歌台地址。

开源协议

本项目使用 GPL v3 协议开源

syncmusic's People

Contributors

imdong avatar kasuganosoras avatar reiujiutsuho avatar yadominjinta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

syncmusic's Issues

运行php server.php出错

错误提示:
WARNING swShareMemory_mmap_create: mmap(10318800632) failed. Error: Cannot allocate memory[12]
PHP Fatal error: Swoole\Table::create(): unable to allocate memory. in /root/SyncMusic/SyncMusic.php on line 81

Fatal error: Swoole\Table::create(): unable to allocate memory. in /root/SyncMusic/SyncMusic.php on line 81
这个错误解决了。server已经后台运行了,服务器后台产生了一大堆 php server.php进程,可是打开网页一直无法连接服务器,

akariin

照你说的做了 打开html的时候链接不上后端
后端在进程里显示了很多
但就是前端链接不上后端

Search.php文件被浏览器拦截

浏览器显示
was loaded over an insecure connection. This file should be served over HTTPS
但是我配置的是http,却出现了https的报错

有没有办法可以让所有客户端同步播放

在公司局域网搭了个,开始只用一个音响,这边的觉得声音正好,对面的就觉得声音太小,调大了音量,这边又觉得太吵。
所以加了一个音响放在对面 。 现在的问题就是不同步了。

始终有个1秒左右的差异 ,估计是不同电脑下载mp3时差导致。。
有没有办法加个同步机制。

Akariin

04-16 02:21:01 @10898.0] WARNING swSocket_bind(:434): bind(0.0.0.0:81
ailed, Error: Address already in use[98]
PHP Fatal error: Uncaught Swoole\Exception: failed to listen server port[0.
0:811], Error: Address already in use[98] in /www/wwwroot/www.zhanghongye132
z/SyncMusic.php:65
Stack trace:
#0 /www/wwwroot/www.zhanghongye1325.xyz/SyncMusic.php(65): Swoole\Server->__
truct()
#1 /www/wwwroot/www.zhanghongye1325.xyz/server.php(82): SyncMusic->init()
#2 {main}
thrown in /www/wwwroot/www.zhanghongye1325.xyz/SyncMusic.php on line 65

Fatal error: Uncaught Swoole\Exception: failed to listen server port[0.0.0.0
], Error: Address already in use[98] in /www/wwwroot/www.zhanghongye1325.xyz
cMusic.php:65
Stack trace:
#0 /www/wwwroot/www.zhanghongye1325.xyz/SyncMusic.php(65): Swoole\Server->__
truct()
#1 /www/wwwroot/www.zhanghongye1325.xyz/server.php(82): SyncMusic->init()
#2 {main}
thrown in /www/wwwroot/www.zhanghongye1325.xyz/SyncMusic.php on line 65
启动时显示这个 不知道怎么一回事

正在播放 Loading...歌词 Loading...

前面的问题跟另外那个未连接到服务器的issues差不多,但是基本上也都操作过了

友情提示 1:要用国内鸡,刚开始我用的国外鸡,后端无法下载音乐,后来发现它调用的是网易云接口!你懂的!
友情提示 2: shell_exec 未开启,python不能运行,无法获取歌曲长度,导致报错,无法播放音乐,找到php.ini,搜寻shell_exec并删除
友情提示 3:表情包无法发送,face.html里的网址替换成你自己的(位置大约最下面,name replace)
友情提示 4 :无法获取用户ip server.php里的USE_X_REAL_IP 选项关闭(若是网站开了ssl,此选项需要打开)

全部没问题,目前环境为虚拟机,计划在公司内员工自己点歌听着玩。
Centos7,一开始先用提供的脚本安装,发现 提示2 里php.ini 无内容,只有添加Swoole的那行指令,经测试,发现脚本编译安装后无配置文件,但个人水平太低,没法,就选择更省事的BT,安装NGINX + PHP7.3 ,插件里也安装了Swoole,主机地址:811也输出正常,截止目前,以上四点全部都检查,但是依然 播放loading 歌词loading。

使用点歌功能,安装radis后,提示 未搜索到此歌曲
检查server.php里地址正常,开启调试模式
内容输出
[2020-01-03 19:32:02 DEBUG] Http Request >> https://cdn.zerodream.net/netease/api.php?source=netease&types=search&name=%E5%94%AF%E4%B8%80&count=1&pages=1
[2020-01-03 19:32:02 DEBUG] Http Request <<

脑壳疼

多个BUG 无法搜索歌曲/无法获取IP/指令失效

无法搜索歌曲:
如题 官方Demo可复现此问题
无法获取IP:
在累计连接数超过某阈值后,后端可获取用户IP,但前端显示Unknown,管理员功能无法使用。
指令失效:
即使登录管理员,删除歌曲指令也无法使用
点歌台Demo地址:sm.moedev.net(HSTS is enabled)

内存问题

下载代码,部署成功以后可以正常点歌进行播放,但是点完一首歌以后,就会出现这个错误PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 825893504 bytes) in /home/music/SyncMusic/SyncMusic.php on line 1400
[2019-12-14 16:02:51 *30491.8] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 825893504 bytes) in /home/music/SyncMusic/SyncMusic.ph
p on line 1400. 不太懂php,所以请教一下这个怎么解决,网上搜索到的答案都是增加内存限制量,但这个方法不好,而且几个月前也部署过一次并没有出现这种问题 ,有时间的话求解答一下 谢谢

非相同ip地址但是为同一个client

直接分享链接给同事,他和我的client为同一个,我点击投票后他再点击投票显示已投过票,他发送信息的时候显示的昵称也是我的昵称,我们俩的IP地址只有最后一段不同

关于后端歌曲下载问题

B03RBC@_C3X G2UCAR~LCXJ
经过在两台不同服务器上的测试,api返回的均为空数据,前后端按照教程正常搭建,系统也是纯净的Centos。有时候也会出现下载歌曲成功(tmp内有数据),但前端提示ERROR_FILE_EMPTY的现象,不知道是后端哪里出了问题

播放故障

网站服务端似乎是正常运行,点歌也是正常,但是没法播放,歌曲正确加载但是不在播放,刷新进度条才会动

音量自动调整

可以把音量放cookies里,每次进入自动调整到原来的大小,不然每次进来都是一次对耳朵的**。

BUG 重复播放歌曲

列表会显示上一首播放的歌曲,位置是0,将当前播放的歌曲置为1,导致歌曲重复播放

手机端无法播放音乐

手机浏览器等进入,进度条会停在进来那会的进度,其他功能正常。
PC端正常使用
music.maogo.xyz

页面未连接到服务器

搭建后页面可正常打开 播放列表loading...
实时聊天下面显示 连接服务器
请问这是哪里的问题呢

切歌时php报错

出现了这样的错误,不知道是什么原因,切歌时候会出现。
root@tutu-virtual-machine:/home/tutu/桌面/SyncMusic-master# php server.php [2020-08-15 10:05:36 INFO] 客户端 1 [192.168.159.1] 已连接到服务器 [2020-08-15 10:05:46 INFO] 客户端 1 发送消息:投票切歌 [2020-08-15 10:05:46 $3900.0] WARNING swManager_check_exit_status: worker#16 abnormal exit, status=0, signal=11

用户歌单读取

可以整一个歌单读取,然后在一个弹窗里列出歌单内容。(下面放个图)

歌曲撤回

希望点歌的人能撤回自己所点的歌,因为常常有点歌点错的

点歌报错

歌曲下载失败,错误代码:ERROR_FILE_EMPTY
服务端输出:
[2021-05-05 12:09:53 INFO] 客户端 48 发送消息:点歌 Roads Untraveled
[2021-05-05 12:09:53 INFO] 正在点歌:Roads Untraveled
[2021-05-05 12:09:55 INFO] 歌曲 Roads Untraveled 不存在,下载中...
[2021-05-05 12:09:55 INFO] 歌曲 Roads Untraveled 下载完成。

MKOnlineMusicPlayer 返回MP3格式

您好~想请问一下,按照官方教程搭建的MKOnlineMusicPlayer返回的是flac格式,SyncMusic无法读取长度导致播放失败。但您搭建的后端返回的就是mp3,想请问一下您的是做了什么修改吗?

php server.php启动报错

root@ip-172-31-4-11:/www/wwwroot/SyncMusic# php server.php
PHP Fatal error:  Uncaught Error: Class 'Swoole\WebSocket\Server' not found in /www/wwwroot/SyncMusic/SyncMusic.php:65
Stack trace:
#0 /www/wwwroot/SyncMusic/server.php(82): SyncMusic->init()
#1 {main}
  thrown in /www/wwwroot/SyncMusic/SyncMusic.php on line 65

Fatal error: Uncaught Error: Class 'Swoole\WebSocket\Server' not found in /www/wwwroot/SyncMusic/SyncMusic.php:65
Stack trace:
#0 /www/wwwroot/SyncMusic/server.php(82): SyncMusic->init()
#1 {main}
  thrown in /www/wwwroot/SyncMusic/SyncMusic.php on line 65
****

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.