Почему мой метод opentok не работает в firebase? - PullRequest
1 голос
/ 17 марта 2020

Я использую функцию firebase, которая запускает OpenTok SDK при запуске. Функция создает сеанс. Мне удалось успешно создать сеанс на моем локальном сервере, но когда я запустил его в производство - в firebase - возникает следующая ошибка:

Error creating session: Error: Failed to createSession. Error: The request failed: Error: getaddrinfo EAI_AGAIN api.opentok.com:443
    at createSessionCallback (/srv/node_modules/opentok/lib/opentok.js:1125:16)
    at Request._callback (/srv/node_modules/opentok/lib/client.js:59:14)
    at self.callback (/srv/node_modules/request/request.js:185:22)
    at emitOne (events.js:116:13)
    at Request.emit (events.js:211:7)
    at Request.onRequestError (/srv/node_modules/request/request.js:877:8)
    at emitOne (events.js:121:20)
    at ClientRequest.emit (events.js:211:7)
    at TLSSocket.socketErrorListener (_http_client.js:401:9)
    at emitOne (events.js:116:13)
Other methods of this third party SDK like token generation also works on firebase but the method createSession fails. Can you help me please?
 exports.dbUpdate = functions.database.ref('/test/{pushId}/text').onUpdate((change, context) => {
  const beforeData = change.before.val(); // data before the write
  const afterData = change.after.val();
  if (beforeData == afterData) {
    console.log("Text did not change");
    return null;
  }

  opentok = new OpenTok("...", "...");
  var sessionId;
  opentok.createSession({
    mediaMode: "routed"
  }, function(error, session) {
    if (error) {
      console.log("Error creating session:", error)
      token = "Failed";
    } else {
      sessionId = session.sessionId;
      token = opentok.generateToken(sessionId);
    }
  });
  return change.after.ref.parent.child('neuertest').set(token);

});
//The same code works on local server  

1 Ответ

1 голос
/ 17 марта 2020

Бесплатный план Spark разрешает только HTTP-вызовы к службам Google (см. Облачные функции на https://firebase.google.com/pricing/)

Вам потребуется обновить свой план, чтобы иметь возможность запускать свои функция

...