暂未进入任何房间
连接信令并加入房间后,此处的成员状态将实时显示
部署您专属的私有信令中转站
使用免费、免运维的 Cloudflare Workers,轻松搭建高防、零成本的 P2P 协调服务器。
1
注册 & 创建 Worker
登录 Cloudflare 控制台,前往 Workers & Pages,点击 "Create application" 按钮创建新 Worker。
2
粘贴并保存部署
点击 "Edit Code",清空原样板,将右侧框内的 JavaScript 代码粘贴进去。点击部署按钮保存生效。
3
应用此服务器
复制 Workers 分配给您的专属 HTTPS 域名。将 https://... 改为 wss://.../ws 并填写至左侧服务器地址框中。
JavaScript / Cloudflare Worker
// Cloudflare Workers 简易多人 WebRTC 协调信令服务器代码 / Simple WebRTC signaling server
export default {
async fetch(request, env, ctx) {
const upgradeHeader = request.headers.get('Upgrade');
if (!upgradeHeader || upgradeHeader !== 'websocket') {
return new Response('请通过 WebSocket 协议连接。', { status: 426 });
}
// 建立一个内存中的 WebSocket 配对会话(仅支持内存交换,适用于常规并发)
const webSocketPair = new WebSocketPair();
const [client, server] = Object.values(webSocketPair);
// 接受连接并加入全局信令交换
await this.handleSession(server);
return new Response(null, {
status: 101,
webSocket: client,
});
},
// 用于跟踪活跃连接的静态变量(CF Workers 中会有多个隔离,但在单中心运行正常)
// 生产环境若需高可靠、大容量推荐绑定 Durable Objects
sessions: new Set(),
async handleSession(ws) {
ws.accept();
this.sessions.add(ws);
ws.addEventListener('message', async (event) => {
try {
const message = JSON.parse(event.data);
// 消息广播机制 (除了发送者本人)
for (const client of this.sessions) {
if (client !== ws && client.readyState === 1) {
client.send(JSON.stringify(message));
}
}
} catch (err) {
console.error('广播消息解析失败: ', err);
}
});
ws.addEventListener('close', () => {
this.sessions.delete(ws);
});
ws.addEventListener('error', () => {
this.sessions.delete(ws);
});
}
};