UNPKG

zdpjs_webrtc

Version:
116 lines (101 loc) 3.95 kB
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;