2013-07-23 13 views
6

Ich versuche eine WebRTC-Anwendung zu testen. Im Moment ist das Beste, was ich tun kann, mehrere private Browserfenster zu öffnen und sie miteinander sprechen zu lassen, aber das skaliert eindeutig nicht.Testen einer WebRTC-Anwendung

Ich bin auf der Suche nach einer Möglichkeit, eine große Anzahl von Peers auf einer einzigen Maschine zu erstellen. Ich habe Phantom.js untersucht, aber es scheint WebRTC noch nicht zu unterstützen. Irgendwelche Vorschläge?

Antwort

8

Das Problem ist, dass PhantomJS derzeit auf QtWebKit basiert und WebRTC sowohl Komponenten von Chromium als auch von WebKit benötigt.

Es wäre eine Menge Arbeit für Phantom.js, all dies neu zu implementieren - und es gibt auch Probleme mit Codec-Unterstützung, etc. Auch kommt mir vor, dass in einer kopflosen Umgebung es schwierig wäre, getUserMedia zu testen(), die für WebRTC grundlegend ist, aber Benutzerinteraktion erfordert und nicht skripted sein kann.

+7

Ich denke, dass Headless WebRTC für Anwendungen nützlich wäre die Datenkanäle anstelle von Video verwenden. Zum Beispiel, Peer-to-Peer-Netzwerke, die aus einer Mischung von Browser- und Nicht-Browser-Knoten bestehen. –

+0

@JesseHallett zustimmen! –

0

Für Mediastream kann es https://www.npmjs.com/package/mediastream eingesetzt werden als:

import { MediaStream as libMediaStream } from 'mediastream'; 

Für getUserMedia() es https://www.npmjs.com/package/get-user-media-promise verwendet werden können, wie:

(<any>window.navigator).mediaDevices = Object.assign({}, 
    window.navigator.mediaDevices, 
    { getUserMedia: require('get-user-media-promise')} 
); 

RTCPeerConnection, auf Unit-Tests abhängt, könnte genauso verspottet :

window['RTCPeerConnection'] =() => { 
    return { 
    close:() => { }, 
    getTracks:() => { }, 
    addStream:() => { }, 
    createOffer:() => { }, 
    addIceCandidate:() => { }, 
    setRemoteDescription:() => { }, 
    createAnswer:() => { }, 
    setLocalDescription:() => { } 
    }; 
};