UNPKG

foxconn-yumeeting-sdk-js

Version:

A js sdk for ion yumeeting

116 lines (105 loc) 2.82 kB
// package: sfu // file: sfu.proto var sfu_pb = require("./sfu_pb"); var grpc = require("@improbable-eng/grpc-web").grpc; var SFU = (function () { function SFU() {} SFU.serviceName = "sfu.SFU"; return SFU; }()); SFU.Signal = { methodName: "Signal", service: SFU, requestStream: true, responseStream: true, requestType: sfu_pb.SignalRequest, responseType: sfu_pb.SignalReply }; SFU.GetRemoteSignal = { methodName: "GetRemoteSignal", service: SFU, requestStream: false, responseStream: false, requestType: sfu_pb.OfferSignal, responseType: sfu_pb.AnswerSignal }; exports.SFU = SFU; function SFUClient(serviceHost, options) { this.serviceHost = serviceHost; this.options = options || {}; } SFUClient.prototype.signal = function signal(metadata) { var listeners = { data: [], end: [], status: [] }; var client = grpc.client(SFU.Signal, { host: this.serviceHost, metadata: metadata, transport: this.options.transport }); client.onEnd(function (status, statusMessage, trailers) { listeners.status.forEach(function (handler) { handler({ code: status, details: statusMessage, metadata: trailers }); }); listeners.end.forEach(function (handler) { handler({ code: status, details: statusMessage, metadata: trailers }); }); listeners = null; }); client.onMessage(function (message) { listeners.data.forEach(function (handler) { handler(message); }) }); client.start(metadata); return { on: function (type, handler) { listeners[type].push(handler); return this; }, write: function (requestMessage) { client.send(requestMessage); return this; }, end: function () { client.finishSend(); }, cancel: function () { listeners = null; client.close(); } }; }; SFUClient.prototype.getRemoteSignal = function getRemoteSignal(requestMessage, metadata, callback) { if (arguments.length === 2) { callback = arguments[1]; } var client = grpc.unary(SFU.GetRemoteSignal, { request: requestMessage, host: this.serviceHost, metadata: metadata, transport: this.options.transport, debug: this.options.debug, onEnd: function (response) { if (callback) { if (response.status !== grpc.Code.OK) { var err = new Error(response.statusMessage); err.code = response.status; err.metadata = response.trailers; callback(err, null); } else { callback(null, response.message); } } } }); return { cancel: function () { callback = null; client.close(); } }; }; exports.SFUClient = SFUClient;