1

我正在尝试使用 Connecty Cube 提供的 sdk 在 2 个用户之间构建一个视频聊天应用程序,到目前为止一切正常。

  • 用户 1(呼叫者):发起呼叫
  • 用户 2(对方):接听电话并接受
  • 用户 1 和用户 2 :应该得到一个回调函数 onRemoteStreamListener 以启动他们之间的视频会话

实际发生的情况用户 2 仅获得 OnRemoteStreamListener 的事件并且可以查看/听到用户 1,而 onRemoteStreamListener 不会在用户 1 端触发。我不确定是什么问题,因为我一直在阅读 Connecty Cube 提供的文档并将其作为集成链接的参考:https ://developers.connectycube.com/js/videocalling?id=accept-a -调用 ConnectyCube SDK 版本:3.9.1

以下是代码示例:

用户 1(来电代码)

async startVideoSession() {
  try {
    const {
      dispatch,
      getters: {
        getConnectyCubeSessionInfo,
        getUserData,
        getSelectedVideoAppointement
      }
    } = this.$store;
    const patientConnectyCubeUserResponse = await dispatch(
      "getUserFromConnectyCube",
      {
        sessionInfo: getConnectyCubeSessionInfo,
        email: getSelectedVideoAppointement.patient.email
      }
    );
    const doctorConnectyCubeUserResponse = await dispatch(
      "getUserFromConnectyCube",
      {
        sessionInfo: getConnectyCubeSessionInfo,
        email: getUserData.email
      }
    );

    const {
      Credentials: { appId }
    } = connectyCubeClient;
    const client = new ConnectyCube();
    await client.init({ appId, token: getConnectyCubeSessionInfo.token });

    await client.createSession({
      login: ########,
      password: ##########
    });
    const token = client.service.sdkInstance.session.token;

    await client.chat.connect({
      userId: doctorConnectyCubeUserResponse.user.id,
      password: token
    });

    const isConnected = await client.chat.isConnected;

    if (isConnected) {
      const calleesIds = [patientConnectyCubeUserResponse.user.id]; // User's ids
      const sessionType = client.videochat.CallType.VIDEO; // AUDIO is also possible
      const additionalOptions = { bandwidth: 256 };
      const session = await client.videochat.createNewSession(
        calleesIds,
        sessionType,
        additionalOptions
      );
      const mediaParams = {
        audio: true,
        video: true,
        options: {
          muted: true,
          mirror: true
        }
      };
      await session
        .getUserMedia(mediaParams)
        .then(localStream => {
          session.attachMediaStream("doctor-video", localStream);
          const extension = {};
          session.call(extension, error => {
            console.log(error);
          });
        })
        .catch(err => {
          console.error(err);
        });
      console.log("last console.log");
      client.videochat.onAcceptCallListener = this.onAcceptCallListener;
      // client.videochat.onUserNotAnswerListener = function(session, userId) {
      //   console.log("call refused");
      // };

      client.videochat.onSessionConnectionStateChangedListener = function(
        session,
        userID,
        connectionState
      ) {
        console.log("Connection state => \n", connectionState);
      };

      client.videochat.onRemoteStreamListener = this.OnRemoteStreamListener;
    }
  } catch (err) {
    console.log("ERRRRRROR", err);
  }
}


OnRemoteStreamListener(session, userId, remoteStream) {
  // attach the remote stream to DOM element
  console.log("STREAM FROM DOCTOR");
  session.attachMediaStream("patient-video", remoteStream);
},

用户 2(对手代码)

async initalizeConnectyCube() {
  const {
    getters: { getPatientData }
  } = this.$store;

  const client = new ConnectyCube();
  const { Credentials, Config } = connectyCubeClient;
  await client.init(Credentials, Config);
  const sessionInfo = await client.createSession();
  await client.init({ appId: Credentials.appId, token: sessionInfo.token });
  const sessionStatus = await client.createSession({
    login: ########,
    password: ########
  });
  const token = client.service.sdkInstance.session.token;
  await client.chat.connect({
    userId: sessionStatus.user.id,
    password: token
  });
  const isUserConnected = await client.chat.isConnected;
  if (isUserConnected) {
    client.videochat.onCallListener = this.handleOnCallListener;
    client.videochat.onRemoteStreamListener = this.handleOnRemoteStreamListener;
  }
}

handleOnRemoteStreamListener(session, userID, remoteStream) {
  // attach the remote stream to DOM element
  console.log("STREAM FROM CALLER");
  session.attachMediaStream("patient-video", remoteStream);
}
4

0 回答 0