+
99
-

浏览器中如何实时通过websocket进行实时语音通话传输?

浏览器中如何实时通过websocket进行实时语音通话传输?


网友回复

+
15
-

我们以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%

我知道答案,我要回答