ArIM
ArIM 是 IM Web SDK 的命名空间,提供 create 方法、version 属性。
创建实例
使用 create 方法创建 IM 实例。
import { create, type CreateOptions } from 'ar-im';
const options: CreateOptions = {
appID: 'YOUR_APPID',
mimIdx: 'YOUR_INDEX',
};
const im = create(options);
IM 实例
通过 create 方法创建的 IM 实例 ArIMClient,拥有一下方法和事件回调。
登录/登出
消息
会话
呼叫
事件
事件名称枚举可见ArIMClientEventsName。
事件列表枚举可见ArIMClientEvents。
Usage
1. 创建客户端实例
import { create, type CreateOptions } from 'ar-im';
const options: CreateOptions = {
appID: 'YOUR_APPID',
mimIdx: 'YOUR_INDEX',
};
const im = create(options);
2. 监听事件
监听事件,应当在创建实例之后保证全局只监听一次,否则当事件广播触发后,就会广播多次(即监听次数),如果只需要监听一次,可以使用 once, 具体参考EventEmitter。
import {
Message,
TextMessage,
ArIMClientEventsName,
ConnectionStatus,
DisconnectReason
} from 'ar-im';
const onNewMessage = (message: Message) => {
if (message instanceOf TextMessage) {
const { text } = message.payload;
console.log('收到新的文字消息:', text);
}
};
const onConnectionStatus = (currentState: ConnectionStatus, prevState: ConnectionStatus, reason?: DisconnectReason | string) => {
};
im.on(ArIMClientEventsName.MESSAGE_RECEIVED, onNewMessage);
im.on(ArIMClientEventsName.CONNECTION_STATUS, onConnectionStatus);
3. 发送文字消息
import {
createTextMessage,
} from 'ar-im';
const textMessage = createTextMessage({
to: conversationId.value,
conversationType,
payload: {
text: content.text!
}
});
im.sendMessage(message);
4. 发起呼叫
import {
createTextMessage,
} from 'ar-im';
const userIds = ['123', '456'];
im.makeCall(
userIds,
JSON.stringify({
mediaType: 'audio',
}),
{
wait: 60,
}
);
完整 Demo
import {
create,
type CreateOptions,
Message,
TextMessage,
createTextMessage,
ArIMClientEventsName,
ConnectionStatus,
DisconnectReason,
CallProfile
} from 'ar-im';
let im: ArIMClient || null = null;
const onNewMessage = (message: Message) => {
if (message instanceOf TextMessage) {
const { text } = message.payload;
console.log('收到新的文字消息:', text);
}
};
const onConnectionStatus = (currentState: ConnectionStatus, prevState: ConnectionStatus, reason?: DisconnectReason | string) => {
};
const onCallInvite = (callProfile: CallProfile) => {
};
const init = async (userId: string) => {
const options: CreateOptions = {
appID: 'YOUR_APPID',
mimIdx: 'YOUR_INDEX',
};
im = create(options);
im.on(ArIMClientEventsName.MESSAGE_RECEIVED, onNewMessage);
im.on(ArIMClientEventsName.CONNECTION_STATUS, onConnectionStatus);
im.on(ArIMClientEventsName.CALL_RECEIVED, onCallInvite);
await im.login({
userID: userId,
userName: '',
userAvatar: ''
});
};
const destroy = () => {
im.logout();
im.off(ArIMClientEventsName.MESSAGE_RECEIVED, onNewMessage);
im.off(ArIMClientEventsName.CONNECTION_STATUS, onConnectionStatus);
im.off(ArIMClientEventsName.CALL_RECEIVED, onCallInvite);
im = null;
}