UNPKG

@pano.video/panortc-react-native-sdk

Version:
276 lines (237 loc) 7.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _reactNative = require("react-native"); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } const { /** * @ignore */ PanoRtcMessageModule } = _reactNative.NativeModules; /** * @ignore */ const Prefix = PanoRtcMessageModule.prefix; /** * @ignore */ const RtcMessageServiceEvent = new _reactNative.NativeEventEmitter(PanoRtcMessageModule); /** * The {@link RtcMessageService} class. */ class RtcMessageService { constructor() { _defineProperty(this, "_listeners", new Map()); } /** * @ignore */ static _callMethod(method, args) { return PanoRtcMessageModule.callMethod(method, args); } destroy() { this.removeAllListeners(); } /** * Adds the [`RtcMessageServiceEventHandler`]{@link RtcMessageServiceEventHandler} handler. * * After setting the [`RtcMessageServiceEventHandler`]{@link RtcMessageServiceEventHandler} handler, you can listen for `RtcMessageService` events and receive the statistics of the corresponding RtcMessageService instance. * @param event The event type. * @param listener The [`RtcMessageServiceEventHandler`]{@link RtcMessageServiceEventHandler} handler. */ addListener(event, listener) { const callback = res => { const { data } = res; // @ts-ignore listener(...data); }; let map = this._listeners.get(event); if (map === undefined) { map = new Map(); this._listeners.set(event, map); } RtcMessageServiceEvent.addListener(Prefix + event, callback); map.set(listener, callback); return { remove: () => { this.removeListener(event, listener); } }; } /** * Removes the [`RtcMessageServiceEventHandler`]{@link RtcMessageServiceEventHandler} handler. * * For callback events that you only want to listen for once, call this method to remove the specific [`RtcMessageServiceEventHandler`]{@link RtcMessageServiceEventHandler} objects after you have received them. * @param event The event type. * @param listener The [`RtcMessageServiceEventHandler`]{@link RtcMessageServiceEventHandler} handler. */ removeListener(event, listener) { const map = this._listeners.get(event); if (map === undefined) return; RtcMessageServiceEvent.removeListener(Prefix + event, map.get(listener)); map.delete(listener); } /** * Removes all the [`RtcMessageServiceEventHandler`]{@link RtcMessageServiceEventHandler} handlers. * @param event The event type. */ removeAllListeners(event) { if (event === undefined) { this._listeners.forEach((_, key) => { RtcMessageServiceEvent.removeAllListeners(Prefix + key); }); this._listeners.clear(); return; } RtcMessageServiceEvent.removeAllListeners(Prefix + event); this._listeners.delete(event); } /** * @~english * @brief Set or update meeting property * @param name The property name. * @param value The to be set. if value is null or length is 0, then the property will be removed from server. * @return * - OK: Success * - others: Failure * @~chinese * @brief 设置或更属性 * @param name 属性名字。 * @param value 属性值。如果 value 为空,或者 length 为0,则此属性会被删除 * @return * - OK: 调用成功 * - others: 调用失败 */ setProperty(name, value) { let str_value = value; return RtcMessageService._callMethod('setProperty', { name, str_value }); } /** * @~english * @brief Send message to specified user. * @param userId The user ID. * @param message The message data in string format * @return * - ResultCode.OK: Success * - others: Failure * @note You can send messages at a maximum frequency of 150 calls every three seconds. * The maximum data length is 4 KB. * @~chinese * @brief 发送消息给指定用户。 * @param userId 用户标识。 * @param message string类型消息数据 * @return * - ResultCode.OK: 成功 * - 其他: 失败 * @note 发送消息的调用频率上限为每 3 秒 150 次。 * 请确保消息大小不超过 4 KB。 */ sendMessage(message, userId) { let str_message = message; return RtcMessageService._callMethod('sendMessage', { str_message, userId }); } /** * @~english * @brief Broadcast message. * @param message The message data in string format * @param sendBack Send back flag * @return * - ResultCode.OK: Success * - others: Failure * @note You can send messages at a maximum frequency of 150 calls every three seconds. * The maximum data length is 4 KB. * @~chinese * @brief 广播消息。 * @param message string类型消息数据 * @param sendBack 是否回发消息 * @return * - ResultCode.OK: 成功 * - 其他: 失败 * @note 发送消息的调用频率上限为每 3 秒 150 次。 * 请确保消息大小不超过 4 KB。 */ broadcastMessage(message, sendBack = true) { let str_message = message; return RtcMessageService._callMethod('broadcastMessage', { str_message, sendBack }); } /** * @~english * @brief Publish topic. * @param topic The topic. * @param data The topic data. * @return * - OK: Success * - others: Failure * @note You can send messages at a maximum frequency of 150 calls every 3 seconds. * The maximum data length is 4 KB. * @~chinese * @brief 发布一个主题。 * @param topic 主题标识。 * @param data 主题数据。 * @return * - OK: 成功 * - 其他: 失败 * @note 发送消息的调用频率上限为每 3 秒 150 次。 * 请确保二进制消息大小不超过 4 KB。 */ publish(topic, data) { let str_data = data; return RtcMessageService._callMethod('publish', { topic, str_data }); } /** * @~english * @brief Subscribe topic. * @param topic The topic. * @return * - OK: Success * - others: Failure * @~chinese * @brief 订阅一个主题。 * @param topic 主题标识。 * @return * - OK: 成功 * - 其他: 失败 */ subscribe(topic) { return RtcMessageService._callMethod('subscribe', { topic }); } /** * @~english * @brief Unsubscribe topic. * @param topic The topic. * @return * - OK: Success * - others: Failure * @~chinese * @brief 取消订阅一个主题。 * @param topic 主题标识。 * @return * - OK: 成功 * - 其他: 失败 */ unsubscribe(topic) { return RtcMessageService._callMethod('unsubscribe', { topic }); } } exports.default = RtcMessageService; //# sourceMappingURL=RtcMessageService.native.js.map