浏览器中如何实时通过websocket进行实时语音通话传输?
网友回复
我们以php的swoole搭建一个websocket服务器
<?php
$server = new Swoole\WebSocket\Server("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
$server->set([
'daemonize' => false,
'ssl_cert_file' => "/data/cert/6284283_web.debug.only.bfw.wiki.pem",
'ssl_key_file' => "/data/cert/6284283_web.debug.only.bfw.wiki.key",
]);
$server->on('open', function($server, $req) {
echo "connection open: {$req->fd}\n";
});
$server->on('message', function($server, $frame) {
//echo "received message: {$frame->data}\n";
// 确保我们处理的是二进制数据
//if ($frame->opcode == WEBSOCKET_OPCODE_BINARY) {
// 广播音频数据到所有其他连接的客户端
// foreach($server->connections as $fd) {
// if($fd != $frame->fd) {
// $server->push($fd, $frame->data, WEBSOCKET_OPCODE_BINARY);
// }
// }
// }
$server->push($frame->fd, $frame->data,WEBSOCKET_OPCODE_BINARY);
});
$server->on('close', function($server, $fd) {
echo "connection close: {$fd}\n";
});
$server->start();
html代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>实时语音通话</title>
</head>
<body>
<button id="startBtn">开始通话</button>
<button id="stopBtn">结束通话</button>
<script>
let ws;
let mediaStream;
let audioContext;
let mediaStreamSource;
let processor;
document.getElementById('startBtn').onclick = s...点击查看剩余70%
ai能写出比黑客还厉害的零日漏洞等攻击工具攻击任意软件系统工程?
js如何获取浏览器的音频上下文指纹、Canvas指纹、WebGL渲染特征?
为啥ai开始抛弃markdown文本,重新偏好html文本了?
网站有没有办法鉴别访问请求是由ai操控chrome-devtools-mcp发出的?
有没有python自动操作浏览器让网站无法鉴别是机器行为?
为啥最新由Meta / 斯坦福 / 哈佛出的ProgramBench基准GPT-5.4、Claude Opus 4.7、Gemini 3.1 Pro 等全部 0% 通过率?
有没有免费的api查询域名是否完成icp工信部备案?
codex用HyperFrames与 Remotion自动做视频那个更好?
claude code中Skill MCP CLI SubAgent Hooks Plugin区别?
浏览器webrtc点对点通讯如何才能走系统代理?


