События WebRTC в Firefox - PullRequest
2 голосов
/ 16 мая 2019

У меня есть рабочее соединение WebRTC в Chrome.Он использует 1 канал данных как часть приложения чата.

Я хочу также поддерживать Firefox, поэтому мне нужно изменить некоторые неподдерживаемые события: для RTCPeerConnection , а также для DataChannel .

Изменения в канале данных работали, как и ожидалось:

    //chrome implenetation
    dc.onopen = this.conncectionStats.bind(this);
    dc.onmessage = onMessage;
    // chrome and firefox
    dc.addEventListener('open', (event) => {
        this.conncectionStats.bind(this)
    });
    dc.addEventListener('message', (event) => {
        onMessage(event)
    });

Однако проблема возникает при изменении PeerConnection:

    // chrome implenetation
    pc.onconnectionstatechange  = this.onConnectionStateChange.bind(this);
    // chrome and firefox
    pc.addEventListener('onconnectionstatechange', (event) => {
        console.log("onconnectionstatechange fired")
        this.onConnectionStateChange.bind(this);
    })

Событие никогда не происходит.Есть идеи, почему это так?

Событие должно быть правильно , но, с другой стороны, документация отсутствует в MDN Web Docs .

1 Ответ

3 голосов
/ 16 мая 2019

Вам следует использовать адаптер WebRTC, чтобы неподдерживаемые события были замаскированы для вас: https://github.com/webrtc/adapter

Я использую его на своих веб-страницах, и onconnectionstatechange прекрасно работает в Firefox:

...
pc.onconnectionstatechange = onConnStateChange;
...

function onConnStateChange(event) {
        if (pc.connectionState === "failed") {
            Terminate();
            alert("Connection failed; playback stopped");
        }
    }
...