概念解释
什么是消息?
消息(Message)是 WuKongIM 中信息传递的基本单位,是用户之间进行实时通讯的载体。每条消息都包含发送者、接收者、内容和元数据等信息。
为什么消息很重要?
- 通讯基础:消息是即时通讯系统的核心,所有的聊天功能都基于消息传递
- 数据载体:消息不仅可以传递文本,还可以传递图片、文件、位置等各种类型的数据
- 状态追踪:每条消息都有唯一标识和状态,便于追踪消息的发送、接收和阅读状态
与其他概念的关系
- 频道(Channel):消息通过频道进行传输,频道定义了消息的发送目标
- 用户(User):消息有明确的发送者和接收者,都是系统中的用户
- 会话(Conversation):消息会更新对应的会话记录,影响会话列表的显示
核心结构
消息包含以下核心属性:
| 属性 | 类型 | 说明 |
|---|
message_id | integer | 消息唯一标识符 |
message_seq | integer | 频道内消息序号 |
client_msg_no | string | 客户端消息标识 |
from_uid | string | 发送者用户ID |
channel_id | string | 目标频道ID |
channel_type | integer | 频道类型(1=个人,2=群组) |
timestamp | integer | 消息时间戳 |
payload | string | Base64编码的消息内容 |
消息示例
{
"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/send | POST | 发送单条消息 |
/message/sendbatch | POST | 批量发送消息 |
/message/search | POST | 搜索历史消息 |
/channel/messagesync | POST | 同步频道消息 |
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 编码,具体格式由应用层定义。