openvidu/openvidu-browser/src/main/resources/ts/OpenVidu/OpenVidu.ts

98 lines
3.4 KiB
TypeScript
Raw Normal View History

/*
* (C) Copyright 2016 OpenVidu (http://kurento.org/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { OpenViduInternal } from '../OpenViduInternal/OpenViduInternal';
import { Session } from './Session';
import { Publisher } from './Publisher';
import * as adapter from 'webrtc-adapter';
2017-03-28 20:17:44 +02:00
if (window) {
window["adapter"] = adapter;
}
2017-03-28 20:17:44 +02:00
export class OpenVidu {
2017-03-28 20:17:44 +02:00
openVidu: OpenViduInternal;
2017-03-28 20:17:44 +02:00
constructor(private wsUri: string) {
this.openVidu = new OpenViduInternal(wsUri);
2017-03-28 20:17:44 +02:00
}
initSession(apiKey: string, sessionId: string): Session;
initSession(sessionId: string): Session;
2017-03-28 20:17:44 +02:00
initSession(param1, param2?): any {
if (this.checkSystemRequirements()){
if (typeof param2 == "string") {
return new Session(this.openVidu.initSession(param2), this);
} else {
return new Session(this.openVidu.initSession(param1), this);
}
2017-04-12 00:54:35 +02:00
} else {
alert("Browser not supported");
2017-04-12 00:54:35 +02:00
}
2017-03-28 20:17:44 +02:00
}
initPublisher(parentId: string, cameraOptions: any): Publisher;
initPublisher(parentId: string, cameraOptions: any, callback: any): Publisher;
initPublisher(parentId: string, cameraOptions: any, callback?): any {
if (this.checkSystemRequirements()){
if (!("audio" in cameraOptions && "data" in cameraOptions && "mediaConstraints" in cameraOptions &&
"video" in cameraOptions && (Object.keys(cameraOptions).length === 4))) {
cameraOptions = {
audio: cameraOptions.audio != null ? cameraOptions.audio : true,
video: cameraOptions.video != null ? cameraOptions.video : true,
data: true,
mediaConstraints: {
audio: true,
video: { width: { ideal: 1280 } }
}
}
}
return new Publisher(this.openVidu.initPublisherTagged(parentId, cameraOptions, callback), parentId);
} else {
alert("Browser not supported");
}
}
checkSystemRequirements(): number {
let browser = adapter.browserDetails.browser;
let version = adapter.browserDetails.version;
//Bug fix: 'navigator.userAgent' in Firefox for Ubuntu 14.04 does not return "Firefox/[version]" in the string, so version returned is null
if ((browser == 'firefox') && (version == null)) {
return 1;
}
if (((browser == 'chrome') && (version >= 28)) || ((browser == 'edge') && (version >= 12)) || ((browser == 'firefox') && (version >= 22))) {
return 1;
} else {
return 0;
}
}
getDevices(callback) {
navigator.mediaDevices.enumerateDevices().then((deviceInfos) => {
callback(null, deviceInfos);
}).catch((error) => {
console.log("Error getting devices: " + error);
callback(error, null);
});
}
}