sowe / peerserver
PHP Socket.io 服务器,用于 WebRTC 信令
Requires
- monolog/monolog: ^2.0
- sowe/framework: ^1.3
- workerman/phpsocket.io: ^1.1
This package is auto-updated.
Last update: 2024-09-15 00:46:00 UTC
README
PHP Socket.io 服务器,用于 WebRTC 信令。
客户端: https://github.com/jsanahuja/peer-client
演示: https://peer-demo.sowecms.com/
安装
克隆客户端和服务器,并安装依赖项。
git clone https://github.com/jsanahuja/php-peer-server.git
git clone https://github.com/jsanahuja/peer-client.git
cd php-peer-server
composer install
cd ../peer-client
npm install
npm run build
创建您的服务器配置文件
cd ../php-peer-server
cp config.example.php config.php
生成您的 Keychain 私钥
php make_keychain.php
结果示例: 1949e2278ea5767099e592ae8dd15677ecf851efd177a1f0fb1d44e8e79231f5
将结果放置在我们在 config.php 文件中定义的常量 KEYCHAIN_PK 中。同时设置 CERT_CA 和 CERT_KEY 文件的绝对路径。您还可以尝试更改其他常量值,但应该可以正常使用。注意,如果您想更改 PORT,您还必须在 peer-client 中更改它。
以守护进程方式启动服务器
php server.php start -d
不要忘记打开/将 PORT 添加到白名单,否则服务器将不可访问。例如,使用 firewalld,您将这样做
firewall-cmd --zone=public --permanent --add-port=8999/tcp
firewall-cmd --reload
注意:HTTP 服务器应指向 peer-client 文件夹。
管理
在此处您可以查看可用命令列表: https://github.com/walkor/Workerman#available-commands
服务器操作
以下是可以发送到服务器的列表。例如 socket.emit('join', 'a68ca609389b6ba7f0766b9ed1bfd8ca')
create(name, password)创建一个房间。
join(roomId, password)加入一个房间。
leave()离开当前房间。
kick(userId)将用户踢出房间。只能由创建者使用。
ban(userId)将用户禁止加入房间。只能由创建者使用。
unban(userId)将用户从房间中取消禁止。只能由创建者使用。
message(msg)向当前房间发送消息。
toggle(resource)切换资源。资源为 'video'、'microphone' 和 'audio'。
candidate(callId, candidate)发送候选人。
offer(callId, offer)发送提议。必须使用call事件请求。
answer(callId, answer)对提议发送答复。必须使用offer事件请求。
服务器响应
以下是服务器将触发的事件。
created(roomId)确认您已创建房间。
joined(roomId)确认您已加入房间。
left(roomId)确认您已离开房间。
kicked通知您已被踢出房间。
banned通知您已被禁止进入房间。
unbanned通知您已被从房间中取消禁止。
call(callId)请求对呼叫的提议
offer(callId, offer)发送提议并需要答复
answer(callId, answer)对提议发送答复
hangup(callId)通知呼叫已关闭
还有错误事件
join_alreadyin通知您无法加入房间,因为您已经在其中。
join_wrongpass通知您无法加入房间,因为提供的密码不正确。
join_full通知您无法加入房间,因为已满。
join_banned通知您无法加入房间,因为您已被禁止。
kick_noprivileges通知您在当前房间中没有足够的权限踢人。
kick_notin通知您尝试踢出的用户已经不在房间中。
ban_noprivileges通知您在当前房间中没有足够的权限进行封禁。
ban_already通知您尝试封禁的用户已经处于封禁状态。
unban_noprivileges通知您在当前房间中没有足够的权限进行解封。
unban_notbanned通知您尝试解封一个未被封禁的用户。
并且是房间事件
r_message(userId, message)通知有人在您的房间中发送了文本消息。
r_resource(userId, resource, status)通知有人在您的房间中切换了一个资源的状态。
r_joined(userId)通知一个用户加入了您的房间。
r_left(userId)通知一个用户离开了您的房间。
r_kicked(userId)通知一个用户被踢出了您的房间。
r_banned(userId)通知您的房间中的一个用户被封禁了。
r_unbanned(userId)通知一个用户已被解封。