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)
通知一个用户已被解封。