Skip to main content

general

SDK татаж авах

  • Доор байрлах Github repository-н src/qrtc_web_sdk folder-г өөрийн төсөл дотор libs folder нээн хадгалах.

  • RoomClient class-г өөрийн ашиглах код дотор оруулж ирнэ. ( import )


  import RoomClient from "../lib/qrtc_web_sdk/RoomClient100";
import {
QRTCMediaDeviceChangeEvent,
QRTCParams,
QRTCVideoEncParams,
QRTCVideoResolution,
QRTCVideoResolutionMode,
QRTCVideoStreamType
} from "../lib/qrtc_web_sdk/RoomParams";
import { RTCError } from "../lib/qrtc_web_sdk/RoomErrors";
  • SDK-г ашигласан жишээ код: Доор байрлах Gitlab repository-н src/app/page.tsx

Gitlab --> https://gitlab.com/callpromn/platform-rtc/PlatformRTC-Web

Суулгах шаардлагатай сангууд

Зарим сангийн шинэ хувилбарыг (version) дэмжихгүй байх магадлалтай тул доорх хувилбарын дагуу суулгана уу


"dependencies": {
"@types/js-cookie": "^2.2.7",
"@types/random-string": "0.0.28",
"@types/retry": "^0.12.5",
"@types/sdp-transform": "^2.4.9",
"awaitqueue": "^2.3.3",
"bowser": "^2.11.0",
"h264-profile-level-id": "^2.0.0",
"js-cookie": "^2.2.1",
"retry": "^0.13.1",
"sdp-transform": "^2.14.2",
"typescript": "^5.1.6",
"websocket": "^1.0.35"
}

Typescript config

{
"compilerOptions": {
"target": "es2020",
"downlevelIteration": true,
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"strictNullChecks": false,
"noUnusedLocals": false,
"noUnusedParameters": false,
"noImplicitAny": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"forceConsistentCasingInFileNames": true,
"module": "es2020",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"noEmit": true,
"jsx": "preserve",
"isolatedModules": true,
"incremental": true,
},
"include": [
// ...
"qrtc_web_sdk",
],
"exclude": [
"node_modules"
]
}

Sdk-г үүсгэж, ашиглах

1. Roomclient class-с шинэ объект үүсгэнэ ( roomClient = new RoomClient(); )
2. Өрөөнд нэвтрэхээс өмнө бичлэгний encode болон дууны чанарыг тохируулах.

Өрөөнд нэвтрэх

roomClient.enterRoom(roomInfo: QRTCParams)
  • roomInfo: serverUrl, sdkAppId, userSig, xConferenceToken, userId, userName, roomId, maxRetryTime зэрэг хувьсагч агуулсан QRTCParams төрлийн объект.

type QRTCParams = {
serverUrl: string,
sdkAppId: string,
userSig: string,
userId: string,
userName: string,
roomId: string,
maxRetryTime?:number,
xConferenceToken?:string,
avatarUrl?:string,
acceptLanguage?:string
}
  • serverUrl: video болон audio-г дамжуулах server-н url ( Тестийн сервер: wss://platform-test.callpro.mn/ )

  • sdkAppId: RTC-dash-с үүсгэсэн appId

  • userSig: Одоогоор ашиглагдахгүй байгаа. ( Өрөөнд нэвтрэхдээ хувьсагчийн утгыг хоосон дамжуулах )

  • userId: Өрөөнд нэвтрэх хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )

  • username: Хурлын өрөөнд бусад хэрэглэгчдэд харагдах хэрэглэгчийн нэр

  • roomId: RTC-dash-с үүсгэж өгсөн appId дээр хурлын нэрийг залгасан ID ( appId_roomName )

  • xConferenceToken: Өрөөнд нэвтрэхэд ашиглагдах Token. Back-end дээр үүсгэнэ. (https://www.npmjs.com/package/rtc-token)

Өрөөнөөс гарах

roomClient.close()
  • browser хаагдах үед дуудагддаг байх

Өрөөнд байгаа хэрэглэгчид рүү msg илгээх

roomClient.sendCustomCmdMsg(cmdId, data)
  • cmdId: 999 утгатай үед "recvRoomTextMsg" listener-т очно. Бусад үед "recvCustomCmdMsg" listener-т очно.

  • data: Бусад хэрэглэгчид рүү илгээх мессеж

Бусад хэрэглэгчдэд харагдах нэрээ солих

roomClient.changeDisplayName(displayName)
  • displayName: String - Бусад хэрэглэгчдэд харагдах нэр

Listener

Өрөөнд амжилттай нэвтрэх үед

roomClient.on( "enterRoom", () => { } );

Өрөөнөөс гарах үед

roomClient.on( "exitRoom", ( data ) => { } );
  • data.reason ( 1-4 ) нь өрөөнөөс гарсан шалтгааныг илэрхийлнэ:

  • 1: Өрөөнөөс хөөгдөх үед

  • 2: Хурлын өрөөг үүсгэсэн хүн хурлыг дуусгасан үед

  • 3: Хурлын өрөөг серверээc хаасан үед

  • 4: Өрөөнөөс хэрэглэгч өөрөө гарсан үед

Серверийн холбоос салах үед

roomClient.on( "connectionLost", () => { } );

Бусад хэрэглэгч өрөөнд нэвтрэх үед

roomClient.on( "remoteUserEnterRoom", ( userInfo ) => { } );
  • userInfo: userId, userName, userDevice зэрэг хувьсагч агуулсан объект

  • userId: Өрөөнд нэвтэрсэн хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )

  • userName: Хурлын өрөөнд бусад хэрэглэгчдэд харагдах тухайн хэрэглэгчийн нэр

  • userDevice: Тухайн хэрэглэгчийн ашиглаж буй төхөөрөмжийн мэдээлэл

Бусад хэрэглэгч өрөөнөөс гарах үед

roomClient.on( "remoteUserLeaveRoom", ( userInfo ) => { } );
  • userInfo: userId-г агуулсан объект

  • userId: Өрөөнөөс гарсан хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )

Хэрэглэгчдэд харагдах нэр өөрчлөгдөх үед

roomClient.on( "displayNameChanged", ( userInfo ) => { } );
  • userInfo: peerId, displayName, oldDisplayName-г агуулсан объект

  • peerId: Өрөөнөөс гарсан хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )

  • displayName: Хэрэглэгчдэд харагдах шинэ нэр

  • oldDisplayName: Хэрэглэгчдэд харагдах хуучин нэр

Бусад хэрэглэгчээс мессеж ирэх үед

roomClient.on( "recvRoomTextMsg", (peerInfo) => { } );
  • peerInfo: peerId, message зэрэг хувьсагч агуулсан объект

  • peerId: Хэрэглэгчийн ID

  • message: Бусад хэрэглэгчээс илгээсэн мессеж

Бусад хэрэглэгчээс тусгай кодтой мессеж ирэх үед

roomClient.on( "recvCustomCmdMsg", (cmdInfo) => { } );
  • cmdInfo: peerId, cmdId, data зэрэг хувьсагч агуулсан объект

  • peerId: Хэрэглэгчийн ID

  • cmdId: Бусад хэрэглэгчээс илгээсэн тусгай код

  • data: Бусад хэрэглэгчээс илгээсэн мессеж

Төхөөрөмж ( device ) солигдох, өөрчлөлт гарах үед

roomClient.on( "deviceChanged", (deviceEvent) => { } );
  • deviceEvent: event, deviceId зэрэг хувьсагч агуулсан объект

  • event: Ямар өөрчлөлт хийгдсэнийг илэрхийлэх тоо ( 0-6 )

  • deviceId: Өөрчлөлт хийгдсэн төхөөрөмжийн ID


enum QRTCMediaDeviceChangeEvent {
QRTCMediaDevice_WebCamAdded = 0, // Камер нэмэгдэх үед
QRTCMediaDevice_WebCamRemoved = 1, // Камер салах үед
QRTCMediaDevice_MicAdded = 2, // Микрофон нэмэгдэх үед
QRTCMediaDevice_MicRemoved = 3, // Микрофон салах үед
QRTCMediaDevice_SpeakerAdded = 4, // Спикер нэмэгдэх үед
QRTCMediaDevice_SpeakerRemoved = 5, // Спикер салах үед
QRTCMediaDevice_Unknown = 6 // бусад
}

Хэрэглэгчийн сүлжээний чанар өөрчлөгдөх үед

roomClient.on( "networkQuality", (qualityInfo) => { } );
  • qualityInfo: uplink, downlink зэрэг хувьсагч агуулсан объект

  • uplink: Upload хурдны чанарыг илэрхийлэх 0-6н хоорондох тоо

  • downlink: Download хурдны чанарыг илэрхийлэх 0-6н хоорондох тоо

  • quality: Сүлжээний чанарыг илэрхийлэх тоо ( 0-6 )


enum QRTCQuality {
QRTCQuality_Unknown = 0,
QRTCQuality_Excellent = 1,
QRTCQuality_Good = 2,
QRTCQuality_Poor = 3,
QRTCQuality_Bad = 4,
QRTCQuality_Vbad = 5,
QRTCQuality_Down = 6
}

Анхааруулга ирэх үед

roomClient.on( "warning", (data) => { } );
  • data: code, message зэрэг хувьсагч агуулсан объект

  • code: алдааны утгыг илэрхийлсэн тоо ( микрофон холбогдоогүй үед 1201, камер холбогдоогүй үед 1111 утгатай байна )

Алдаа гарах үед ( Зөвхөн код )

roomClient.on( "error", (data) => { } );
  • data: code хувьсагч агуулсан объект

  • code: алдааны утгыг илэрхийлсэн тоо

Алдаа гарах үед ( Код, мессеж )

roomClient.on( "errorMsg", (data) => { } );
  • data: code, errorData хувьсагч агуулсан объект

  • code: алдааны утгыг илэрхийлсэн тоо

  • errorData: msg хувьсагч агуулсан объект

  • msg: String - алдааны мессеж


{
"code": 80000301,
"errorData": { "msg": "Resolution not supported" }
}
  • 80000301: Camera start fail

  • 80000302: Microphone start fail

  • 80000303: The camera device is not authorized

  • 80000304: The microphone device is not authorized

  • 80000310: The camera is occupied

  • 80000311: The microphone is occupied