zdpjs_webrtc
Version:
基于easyrtc二次开发的webrtc框架
116 lines (101 loc) • 3.95 kB
JavaScript
let g = require("./general_util"); // 通用实用函数本地模块
g.checkModules(); // 检查以确保所有需要的模块都可用
let _ = require("underscore"); // 外部模块通用实用函数
let pub = require("./easyrtc_public_obj"); // EasyRTC公共对象
// 导出模块
let server = module.exports;
/**
* 启动EasyRTC服务器的侦听器。successCallback可用于确定EasyRTC何时完全运行。
*
* @param {Object} httpApp express http对象。允许EasyRTC与http服务器交互。
* @param {Object} socketServer socket.io 服务器对象。允许EasyRTC与套接字服务器交互。
* @param {Object} options EasyRTC 选择对象。设置配置选项。如果为空,则使用默认值。
* @param {function(Error, Object)} listenCallback 当启动例程完成时调用。以successCallback(err, pub)的形式。参数'err'将为空,除非发生错误,并且'pub'是用于与服务器交互的EasyRTC公共对象。
*/
server.listen = function (httpApp, socketServer, options, listenCallback) {
pub.util.logInfo("启动zdpjs_webrtc服务:webrtc版本:" + pub.getVersion() + ",nodejs版本:" + process.version + "");
// 在公共对象中设置服务器对象引用
pub.httpApp = httpApp;
pub.socketServer = socketServer;
if (options) {
pub.util.logDebug("覆盖默认配置:", options);
for (let optionName in options) {
if (options.hasOwnProperty(optionName)) {
pub.setOption(optionName, options[optionName]);
}
}
}
pub.util.logDebug("发射事件“startup”");
pub.events.emit("startup", function (err) {
if (err) {
pub.util.logError("启动时出错", err);
if (_.isFunction(listenCallback)) {
listenCallback(err, null);
}
} else {
pub.util.logInfo("zdpjs_webrtc服务器准备连接 (v" + pub.getVersion() + ")");
if (_.isFunction(listenCallback)) {
listenCallback(err, pub);
}
}
});
};
/**
* 返回一个带有默认选项副本的EasyRTC选项对象。
*
* @returns {Object} zdpjs_webrtc配置对象
*/
server.getDefaultOptions = function () {
let defaultOptions = require("./easyrtc_default_options");
return g.deepCopy(defaultOptions);
};
/**
* 为给定的zdpjs_webrtc事件设置侦听器。每个事件只允许一个监听器。在添加新的事件侦听器之前,将删除事件的任何其他侦听器。
*
* @private
* @param {String} event 监听器名称
* @param {Function} listener 回调函数
*/
server.on = function (event, listener) {
if (event && _.isFunction(listener)) {
pub.events.removeAllListeners(event);
pub.events.on(event, listener);
} else {
pub.util.logError("无法向事件添加监听器 '" + event + "'");
}
};
/**
* 删除事件的所有监听器。如果有一个默认的zdpjs_webrtc侦听器,它将被添加。
*
* @private
* @param {String} event 监听器名称
*/
server.removeAllListeners = function (event) {
if (event) {
pub.events.removeAllListeners(event);
pub.events.setDefaultListener(event);
}
};
/**
* 返回事件的监听器。
*
* @private
* @param {String} event 监听器名称
*/
server.listeners = pub.events.listeners;
/**
* 公开所有事件函数
*/
server.events = pub.events;
/**
* 公开公共工具函数
*/
server.util = pub.util;
/**
* 添加个人配置
*
* @param {Object} option 配置名称
* @param {Object} value 配置值
* @returns {Boolean} 成功返回true,失败返回false
*/
server.setOption = pub.setOption;