Как мне отключить клиентов от сеанса с opentok? - PullRequest
1 голос
/ 21 мая 2019

Каждый раз, когда я вызываю метод session.disconnect () для удаления клиентов из сеанса, я получаю это предупреждение: «OpenTok: Publisher: warn Получено событие подключения:« Отмена »без« Попытка »

, и этоошибка: «OpenTok: подписчик: ошибка Неверный переход состояния: событие« отключить »невозможно в состоянии« отключено »»

Может кто-нибудь объяснить мне, что означает эта ошибка? Заранее спасибо.


// Initialize the session
      var session = OT.initSession(data['apikey'], data['session_id']);
      console.log(session);

      // Initialize the publisher for the recipient
      var publisherProperties = {insertMode: "append", width: '100%', height: '100%'};
      var publisher = OT.initPublisher('publisher', publisherProperties, function (error) {
        if (error) {
          console.log(`Couldn't initialize the publisher: ${error}`);
        } else {
          console.log("Receiver publisher initialized.");
        }
      });
      $('#session-modal').modal("show");

      // Detect when new streams are created and subscribe to them.
      session.on("streamCreated", function (event) {
        console.log("New stream in the session");
        var subscriberProperties = {insertMode: 'append', width: '100%', height: '100%'};
        var subscriber = session.subscribe(event.stream, 'subscriber', subscriberProperties, function(error) {
          if (error) {
            console.log(`Couldn't subscribe to the stream: ${error}`);
          } else {
            console.log("Receiver subscribed to the sender's stream");
          }
        });
      });

      //When a stream you publish leaves a session, the Publisher object dispatches a streamDestroyed event:
      publisher.on("streamDestroyed", function (event) {
        console.log("The publisher stopped streaming. Reason: "
        + event.reason);

      });

      //When a stream, other than your own, leaves a session, the Session object dispatches a streamDestroyed event:
      session.on("streamDestroyed", function (event) {
        console.log("Stream stopped. Reason: " + event.reason);
        session.disconnect();
        console.log("called session.disconnect().");


      });


      session.on({
        connectionCreated: function (event) {
          connectionCount++;
          if (event.connection.connectionId != session.connection.connectionId) {
            console.log(`Another client connected. ${connectionCount} total.`);
          }
        },
        connectionDestroyed: function connectionDestroyedHandler(event) {
          connectionCount--;
          console.log(`A client disconnected. ${connectionCount} total.`);
        }
      });

      // Connect to the session
      // If the connection is successful, publish an audio-video stream.
      session.connect(data['token'], function(error) {
        if (error) {
          console.log("Error connecting to the session:", error.name, error.message);
        } else {
          console.log("Connected to the session.");
          session.publish(publisher, function(error) {
            if (error) {
              console.log(`couldn't publish to the session: ${error}`);
            } else {
              console.log("The receiver is publishing a stream");
            }
          });
        }
      });

      // Stop the publisher from streaming to the session if the user dismiss the modal
      const stopSession = document.getElementById('stop-session');
      stopSession.addEventListener("click", (event) => {
        event.preventDefault();
        session.disconnect();
      });


1 Ответ

0 голосов
/ 20 июня 2019

Я очень сомневаюсь, что вы можете отключить клиент с помощью JavaScript. Вот что я сделал.

// Connect to the session
session.connect(token, function connectCallback(error) {
 // Get the connectionId
    connectionId = session.connection.connectionId;

и используйте один из их SDK на бэкэнд https://tokbox.com/developer/sdks/server/

// Disconnect session
function disconnectSession() { // eslint-disable-line no-unused-vars
 if (sessionId && connectionId) {
    $.ajax({
        url: '/OpenTok/DisconnectSession',
        type: 'POST',
        data: 'sessionId=' + sessionId + '&connectionId=' + connectionId,
    });
   }
}
...