sowe/peerserver

PHP Socket.io 服务器,用于 WebRTC 信令

资助包维护!
www.paypal.me/JavierSL

安装: 5

依赖项: 0

建议者: 0

安全性: 0

星标: 15

关注者: 3

分支: 8

开放问题: 0

类型:项目

0.0.10 2021-04-14 17:48 UTC

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