web
SDK татаж авах
Typescript сан ашиглах бол доор байрлах Github repository-н src/qrtc_web_rtm folder-г, javascript сан ашиглах бол src/qrtc_web_rtmjs folder-г өөрийн төсөл дотор libs folder нээн хадгалах.
RTM class-г өөрийн ашиглах код дотор оруулж ирнэ. Typescript:
import { RTM } from "../libs/qrtc_web_rtm/rtm";
- Javascript:
const { RTM } = require("../libs/qrtc_web_rtmjs/rtm.js");
SDK-г ашигласан жишээ код - Typescript: Доор байрлах Github repository-н src/App.tsx
Javascript: example/Nodejs-Real-time-Chat-Application/
Github --> https://github.com/platformwolo/PlatformRTM-Web
Суулгах шаардлагатай сангууд
Зарим сангийн шинэ хувилбарыг (version) дэмжихгүй байх магадлалтай тул доорх хувилбарын дагуу суулгана уу
"dependencies": {
"@types/event-emitter": "^0.3.3",
"@types/js-cookie": "^2.2.7",
"@types/lodash": "^4.14.197",
"@types/node": "^16.7.13",
"@types/random-string": "0.0.28",
"@types/retry": "^0.12.2",
"@types/sdp-transform": "^2.4.6",
"@types/styled-components": "^5.1.26",
"awaitqueue": "^2.3.3",
"bowser": "^2.11.0",
"event-emitter": "^0.3.5",
"immutable": "^4.3.2",
"js-cookie": "^2.2.1",
"js-sha256": "^0.9.0",
"lodash": "^4.17.21",
"moment": "^2.29.4",
"query-string": "^8.1.0",
"random-string": "^0.2.0",
"retry": "^0.13.1",
"sdp-transform": "^2.14.1",
"styled-components": "^6.0.7",
"typescript": "^5.1.6",
"websocket": "^1.0.34"
}
Sdk-г үүсгэх
RTM class-с шинэ объект үүсгэнэ ( rtmClient = new RTM( appId: string, userId: string, rtmConfig?: RTMConfig ); )
appId: RTC-dash-с үүсгэсэн appId
userId: Rtm үүсгэж байгаа хэрэглэгчийн Id
rtmConfig: RTMConfig төрлийн объект ( Одоогоор serverUrl, token 2-с бусад хувьсагч ашиглагдахгүй байгаа тул дурын төрөл харгалзах утгыг дамжуулаарай )
- Анхаарах зүйлс
export type RTMConfig = {
serverUrl: string, // Rtm server-н хаяг
token: string, // Rtm server рүү нэвтрэх token. Back-end дээр үүсгэнэ. (https://www.npmjs.com/package/rtc-token)
encryptionMode: string, // мессеж нууцлах ( "NONE", "AES_128_GCM", "AES_256_GCM" )
cipherKey: string, // мессеж нууцлахад ашиглах түлхүүр
salt: Uint8Array, // new Uint8Array(6), мессеж нууцлалт оруулж байгаа үед заавал оруулах
useStringUserId: boolean, // true, Хэрэглэгчийн ID string үед true утгатай байна
presenceTimeout: number, // 1000,
logUpload: boolean, // false,
logLevel: string, // "verbose",
cloudProxy: boolean // false
}
Нэвтрэх
rtmClient.login(): Promise<LoginResponse>
Нэвтрэхийн өмнө SDK-г амжилттай үүсгэсэн байх
Амжилттай нэвтэрсний дараа бусад method-уудыг ашиглах боломжтой болно
LoginResponse: Амжилттай үед буцаах объект
ErrorInfo: Амжилтгүй үед гарах алдааны мэдээлэл ( throw )
export type LoginResponse = {
timeToken: number // Хэрэглэгчийн амжилттай нэвтэрсэн хугацаа
}
export type ErrorInfo = {
error: boolean;
operation: string;
errorCode: number;
reason: string;
}
Sdk-с гарах
1. rtmClient.logout(): Promise<LogoutResponse>2. rtmClient.close()
browser хаагдах, app хаагдах үед дуудагддаг байх
LogoutResponse: Амжилттай үед буцаах объект
ErrorInfo: Амжилтгүй үед гарах алдааны мэдээлэл ( throw )
export type LoginResponse = {
timeToken: number // Хэрэглэгчийн амжилттай гарсан хугацаа
}
export type ErrorInfo = {
error: boolean;
operation: string;
errorCode: number;
reason: string;
}
Channel руу орох
rtmClient.subscribe(channelName: string): Promise<SubscribeResponse>
channelName: String - Channel-н нэр
SubscribeResponse: Амжилттай үед буцаах объект
ErrorInfo: Амжилтгүй үед гарах алдааны мэдээлэл ( throw )
export type SubscribeResponse = {
timeToken : number // Channel руу амжилттай орсон хугацаа
channelName : string // Channel-н нэр
}
export type ErrorInfo = {
error: boolean;
operation: string;
errorCode: number;
reason: string;
}
Channel-с гарах
rtmClient.unsubscribe(channelName: string): Promise<UnsubscribeResponse>
channelName: String - Channel-н нэр
UnsubscribeResponse: Амжилттай үед буцаах объект
ErrorInfo: Амжилтгүй үед гарах алдааны мэдээлэл ( throw )
export type UnsubscribeResponse = {
timeToken : number // Channel-с амжилттай гарсан хугацаа
channelName : string // Channel-н нэр
}
export type ErrorInfo = {
error: boolean;
operation: string;
errorCode: number;
reason: string;
}
Channel-д байгаа хэрэглэгчид рүү мессеж явуулах
rtmClient.publish(channelName: string, message: string): Promise<PublishResponse>
Channel-д амжилттай орсны ( subscribe ) дараа ашиглах
channelName: String - Channel-н нэр
message: String - Илгээх мессеж
PublishResponse: Амжилттай үед буцаах объект
ErrorInfo: Амжилтгүй үед буцаах алдааны мэдээлэл
export type PublishResponse = {
timeToken : number // Амжилттай илгээсэн хугацаа
channelName : string // Channel-н нэр
}
export type ErrorInfo = {
error: boolean;
operation: string;
errorCode: number;
reason: string;
}
Бусад хэрэглэгч рүү мес сеж явуулах
rtmClient.publishToPeer(peerId: string, message: string): Promise<PublishResponse>
peerId: String - Хэрэглэгчийн ID
message: String - Илгээх мессеж
PublishResponse: Амжилттай үед буцаах объект
ErrorInfo: Амжилтгүй үед буцаах алдааны мэдээлэл
export type PublishResponse = {
timeToken : number // Амжилттай илгээсэн хугацаа
channelName : string // Хэрэглэгчийн ID
}
export type ErrorInfo = {
error: boolean;
operation: string;
errorCode: number;
reason: string;
}
Listener
Channel-д хэрэглэгч орох, гарах үед
rtmClient.addEventListener( 'presence', (event) =>{ }
);
event: action, channelName, channelType, publisher зэрэг хувьсагчаас бүрдсэн объект
action: String - Хэрэглэгч орох үед "REMOTE_JOIN", хэрэглэгч гарах үед "REMOTE_LEAVE" утгатай байна.
channelName: String - Channel-н нэр
channelType: String - Channel-н төрөл ( "MESSAGE" )
publisher: String - Хэрэглэгчийн ID
Channel-д бусад хэрэглэгчдээс мессеж ирэх үед
rtmClient.addEventListener( 'message', (event) =>{ }
);
event: channelName, channelType, message, messageType, publisher зэрэг хувьсагчаас бүрдсэн объект
channelName: String - Channel-н нэр
channelType: String - Channel-н төрөл ( "MESSAGE" )
message: String - Хэрэглэгчийн илгээсэн мессеж
messageType: String - Мессежний төрөл ( "string" )
publisher: String - Хэрэглэгчийн ID
Бусад хэрэглэгчээс мессеж ирэх үед
rtmClient.addEventListener( 'peerMessage', (event) =>{ }
);
event: message, messageType, publisher зэрэг хувьсагчаас бүрдсэн объект
message: String - Хэрэглэгчийн илгээсэн мессеж
messageType: String - Мессежний төрөл ( "string" )
publisher: String - Хэрэглэгчийн ID