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