0

インポートされたユーザーを含むカスタム アプリで API を使用しようとしています。すべて正常に動作します (auth_token、ログイン、呼び出し開始) が、呼び出し先が応答を取得してリモートストリームを追加する必要がある場合、何も起こりません。コンソールにエラーは表示されません。誰かがコードを見て、何が欠けているか教えていただければ幸いです。https://freeofcinema.vline.comで vline デモを試してみました が、2 台のコンピューター間で同じブラウザーと条件で動作しました。私のアプリでは http ですが、 https でも試してみましたが、同じ問題が発生しました。これは、API のテストに使用した簡略化されたコードです。

var Streams = [];
var Vsession = null;
var Vline = (function(){
    var Client;
    var authToken;
    var service_id = 'freeofcinema'; 
    var profile = null;
    var Person;
    var Calls = [];

var onMessage = function(event){
    //alert('message');
    var msg = event.message, sender = msg.getSender();
    console.log(sender.getDisplayName() +'sais: '+ msg.getBody());
    console.log(event);
}
var onMediaSession = function(event){
    console.log(event); 
    var mediaSession = event.target; 
    InitSession(mediaSession);
}

function Call(mediaSession) {
    mediaSession.
    on('change', alert_info);
}

function alert_info(b){
    console.log(b);
}

function InitSession(mediaSession){
    mediaSession.on('mediaSession:addRemoteStream', function(event) {
        alert('addRemoteStream');
    });
    mediaSession.on('mediaSession:addLocalStream', function(event) {
        alert('addLocalStream');
    });
    mediaSession.on('mediaSession:removeLocalStream mediaSession:removeRemoteStream', function(event) {
        console.log('removedStream');
    });
    Calls.push(new Call(mediaSession));
}

return {
    init : function(){
        if(profile){
            return;
        }
        profile = {
            "displayName" : //some getusrname function...
        }; 
        $.post('vtoken.php',{//get auth token
            id : Comm.Voip_user().id
        },function(data){
            authToken = data;
            Client = vline.Client.create({
                "serviceId": service_id,
                "ui" : true
            });
            Client.on('recv:im', onMessage , this);
            Client.on('add:mediaSession', onMediaSession, this);
            Client.on('login', function(e) {
                Vsession = e.target;
                //alert('loged in');
            });
            Client.login(service_id, profile, authToken); 
        });   
    },
    getPerson : function(id){//id of user to call
        if(Vsession){
            Vsession.getPerson(id).
            done(function(person){
                Person = person;
                Vsession.startMedia(id);
            });
        } 
    }
}
}());

ご回答ありがとうございます。

アプリの 1 人のユーザーとhttps://freeofcinema.vline.comの別のユーザーで試してみましたが、同じ問題が発生しました。また、(保留状態の) 通話はしばらくすると終了します。

4

1 に答える 1

1

クライアントの作成時に ui:true を渡す場合、メディア セッションを自分で処理する必要はありません。行をコメントするだけです

Client.on('add:mediaSession', onMediaSession, this);
そしてそれはうまくいくはずです。

于 2013-08-29T02:47:04.947 に答える