+
80
-

如何用webrtc实现一个p2p文件发送的代码?

如何用webrtc实现一个p2p文件发送的代码?


网友回复

+
0
-

800_auto

发送文件我们先实现p2p发送消息,我们用php swoole搭建一个信令服务器

<?php

$userlist = [];
$server = new Swoole\Websocket\Server("0.0.0.0", 9502, SWOOLE_BASE, SWOOLE_SOCK_TCP | SWOOLE_SSL);

$server->set([
    '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) {
    $_get = $req->get;
    $_username = $_get['username'];
    global $userlist;
    $userlist[$_username] = $req->fd;
    echo "connection open: {$req->fd}{$_username}\n";
});

$server->on('message', function($server, $frame) {

    $data = json_decode($frame->data, true);


    //消息类型
    $type = $data["type"];
    $_ret = ["type" => $type];

    //to user
    $toUser = $data["toUser"];

    $fromUser = $data["fromUser"];

    $msg = isset($data["msg"])?$data["msg"]:"";
    //msg

    $sdp = isset($data["sdp"])?$data["sdp"]:"";
    //sdp
    $iceCandidate = isset($data["iceCandidate"])?$data["iceCandidate"]:"";
    //ice




    //对方挂断
    if ("hangup" == $type) {
        $_ret['fromUser'] = $fromUser;
        $_ret['msg'] = "对方挂断";

    }

    //视频通话请求
    if ("call_start" == $type) {

        $_ret['fromUser'] = $fromUser;
        $_ret['msg'] = "1";

    }

    //视频通话请求回应
    if ("call_back" == $type) {
        $_ret['fromUser'] = $fromUser;
        $_ret['msg'] = $msg;

    }

    //offer
    if ("offer" == $type) {

        $_ret['fromUser'] = $toUser;
        $_ret['sdp'] = $sdp;

    }

    //answer
    if ("answer" == $type) {
        $_ret['fromUser'] = $toUser;
        $_ret['sdp'] = $sdp;

    }

    //ice
    if ("_ice" == $type) {
        $_ret['fromUser'] = $toUser;
        $_ret['iceCandidate'] = $iceCandidate;

    }
    if ($toUser != "") {
        global $userlist;
        if (!isset($userlist[$toUser])) {
            $_ret['msg'] = "Sorry,呼叫的用户不在线!";
            $_ret['type'] = "call_back";
            $_ret['fromUser'] = "系统消息";


            $_senddata = json_encode($_ret);
            $server->push($frame->fd, $_senddata);
        } else {
            foreach ($userlist as $key => $val) {
                if ($key == $toUser) {
                    $_senddata = json_encode($_ret);
                    echo "send message: {$_senddata}\n";
                    $server->push($val, $_senddata);
                }
            }
        }


    }

    // echo "received message: {$frame->data}\n";

});

$server->on('close', function($server, $fd) {
    echo "connection close: {$fd}\n";
});

$server->start();

在使用html实现

点击查看全文

我知道答案,我要回答