🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

ar-whiteboard-shapes

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ar-whiteboard-shapes

ArIM 是 IM Web SDK 的命名空间,提供 `create` 方法、`version` 属性。

latest
npmnpm
Version
0.0.3
Version published
Maintainers
1
Created
Source

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,拥有一下方法和事件回调。

登录/登出

API说明
login登录即时通信 (IM) 系统。
logout登出即时通信 (IM) 系统。

消息

API说明
createAudioMessage创建音频消息。
createCustomMessage创建自定义消息。
createFileMessage创建文件消息。
createForwardMessage创建转发消息。
createImageMessage登创建图片消息。
createTextMessage创建文字消息。
createVideoMessage创建视频消息。
deleteMessage删除本地消息。
sendMessage发送(点对点或群组)消息。

会话

API说明
createConversation用于创建 C2C(单聊) 或群组会话(群聊)。
deleteConversation删除本地会话。
getConversationInfo获取会话信息。
getConversationList获取会话列表。
getMessageList获取会话的消息列表。
sendMessageReadReceipt发送消息已读回执。
setConversationActive设置会话活动状态。
setConversationNotDisturb设置会话免打扰状态。
setConversationPinned设置会话置顶状态。
updateConversation更新会话的信息。
updateConversationProfile更新会话的资源。

呼叫

API说明
acceptCall同意远端呼叫邀请。
endCall结束/挂断呼叫。
getCallState获取当前呼叫状态。
joinCall主动加入呼叫。
makeCall发起呼叫。
rejectCall拒绝远端呼叫邀请。

事件

事件名称枚举可见ArIMClientEventsName事件列表枚举可见ArIMClientEvents

事件名称API说明
ArIMClientEventsName.CALL_ENDEDOnEndCall呼叫结束通知。
ArIMClientEventsName.CALL_MEMBER_JOINOnCallMemberJoin呼叫成员加入通知。
ArIMClientEventsName.CALL_MEMBER_LEAVEOnCallMemberLeave呼叫成员离开通知。
ArIMClientEventsName.CALL_MEMBER_STATEOnCallMemberState呼叫成员状态通知。
ArIMClientEventsName.CALL_RECEIVEDOnCallMemberLeave呼叫成员加入通知。
ArIMClientEventsName.CONNECTION_STATUSOnConnectionStatus网络状态变化通知。
ArIMClientEventsName.CONVERSATION_CALL_BEGINNINGOnConversationCallBeginning群呼进行中的通知。
ArIMClientEventsName.CONVERSATION_CALL_ENDEDOnConversationCallEnded群呼结束通知。
ArIMClientEventsName.CONVERSATION_CREATEDOnConversationCreated新会话通知。
ArIMClientEventsName.CONVERSATION_DELETEDOnConversationDeleted会话被删除通知。
ArIMClientEventsName.CONVERSATION_INFO_UPDATEDOnConversationInfoUpdated会话信息变更通知。
ArIMClientEventsName.JOIN_CALL_RESULTOnJoinCallResult加入呼叫结果的通知。
ArIMClientEventsName.KICKED_OUTOnCallMemberLeave呼叫成员加入通知。
ArIMClientEventsName.MESSAGE_RECEIVEDOnMessageReceived新消息通知。
ArIMClientEventsName.MESSAGE_STATUSOnMessageStatus发送的消息状态通知。
ArIMClientEventsName.NEW_REPORT_EVENTOnNewReportEvent新事件通知。

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);
  }
  // TODO
};
const onConnectionStatus = (currentState: ConnectionStatus, prevState: ConnectionStatus, reason?: DisconnectReason | string) => {
  // TODO
};

// 监听新消息通知
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';

// 被呼叫的用户 ID
const userIds = ['123', '456'];
// 发送
im.makeCall(
  userIds,
  // 自定呼叫数据
  JSON.stringify({
    mediaType: 'audio', // audio or video
  }),
  {
    // 可选参数,呼叫等待时长(秒)
    wait: 60,
    // 可选参数,自定呼叫 ID
    // callId,
    // 可选参数,自定群组 ID
    // groupId
  }
);

完整 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);
  }
  // TODO
};
const onConnectionStatus = (currentState: ConnectionStatus, prevState: ConnectionStatus, reason?: DisconnectReason | string) => {
  // TODO
};
const onCallInvite = (callProfile: CallProfile) => {
  // TODO
};
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); // 保证 this 指向,否则无法取消监听
  // 取消监听连接状态变化
  im.off(ArIMClientEventsName.CONNECTION_STATUS, onConnectionStatus);
  // 取消监听呼叫邀请
  im.off(ArIMClientEventsName.CALL_RECEIVED, onCallInvite);
  im = null;
}

FAQs

Package last updated on 18 Feb 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts