跳转到主要内容

概念解释

什么是消息?

消息(Message)是 WuKongIM 中信息传递的基本单位,是用户之间进行实时通讯的载体。每条消息都包含发送者、接收者、内容和元数据等信息。

为什么消息很重要?

  • 通讯基础:消息是即时通讯系统的核心,所有的聊天功能都基于消息传递
  • 数据载体:消息不仅可以传递文本,还可以传递图片、文件、位置等各种类型的数据
  • 状态追踪:每条消息都有唯一标识和状态,便于追踪消息的发送、接收和阅读状态

与其他概念的关系

  • 频道(Channel):消息通过频道进行传输,频道定义了消息的发送目标
  • 用户(User):消息有明确的发送者和接收者,都是系统中的用户
  • 会话(Conversation):消息会更新对应的会话记录,影响会话列表的显示

核心结构

消息包含以下核心属性:
属性类型说明
message_idinteger消息唯一标识符
message_seqinteger频道内消息序号
client_msg_nostring客户端消息标识
from_uidstring发送者用户ID
channel_idstring目标频道ID
channel_typeinteger频道类型(1=个人,2=群组)
timestampinteger消息时间戳
payloadstringBase64编码的消息内容

消息示例

{
  "message_id": 123456789,
  "message_seq": 1001,
  "client_msg_no": "client_msg_123",
  "from_uid": "user123",
  "channel_id": "group123",
  "channel_type": 2,
  "timestamp": 1640995200,
  "payload": "SGVsbG8gV29ybGQ="
}

相关 API 端点

端点方法说明
/message/sendPOST发送单条消息
/message/sendbatchPOST批量发送消息
/message/searchPOST搜索历史消息
/channel/messagesyncPOST同步频道消息

EasySDK 代码示例

发送消息

import { WKIM, WKIMChannelType } from 'easyjssdk';

// 初始化 SDK
const im = WKIM.init("ws://your-server.com:5200", {
  uid: "your_user_id",
  token: "your_token"
});

// 发送文本消息
const textPayload = {
  type: 1,
  content: "Hello, World!"
};
const result = await im.send("friend_user_id", WKIMChannelType.Person, textPayload);

// 发送图片消息
const imagePayload = {
  type: 2,
  url: "https://example.com/image.jpg",
  width: 800,
  height: 600
};
const imageResult = await im.send("group_id", WKIMChannelType.Group, imagePayload);

监听消息

import { WKIMEvent } from 'easyjssdk';

// 监听新消息
im.on(WKIMEvent.Message, (message) => {
  console.log("收到新消息:", message);
  console.log("消息内容:", message.payload);
  console.log("发送者:", message.fromUid);
});

消息类型处理

// 根据消息类型处理不同内容
im.on(WKIMEvent.Message, (message) => {
  const payload = JSON.parse(message.payload);

  switch (payload.type) {
    case 1: // 文本消息
      console.log("文本消息:", payload.content);
      break;
    case 2: // 图片消息
      console.log("图片消息:", payload.url);
      break;
    case 100: // 自定义消息
      console.log("自定义消息:", payload);
      break;
  }
});
消息内容 payload 字段使用 Base64 编码,具体格式由应用层定义。