logo
当前页

实时消息与信令

2024-01-02

功能简介

ZEGO 提供多种文本消息的收发功能,实现发送房间内广播消息、弹幕消息、简单 IM 文字聊天、点赞、送礼物、答题等功能。

消息类型功能描述应用场景发送频率限制
广播消息向同一房间内所有用户发送文本消息。可用于简单的房间内聊天室场景。请参考 限制说明
弹幕消息观众在直播过程中可以发表自己的评论,并以滑动而过的字幕显示出来,增加了观众之间的互动性。一般用于房间内有大量消息收发,且不需要保证消息可靠性的场景,例如直播弹幕。请参考 限制说明
自定义信令向同一房间内单个或多个用户发送消息。一般用于远程控制信令或简单的文字消息发送。比如在线娃娃机场景中,远程控制娃娃机夹子的移动。请参考 限制说明

另外,ZEGO 还提供完整的即时通讯 ZIM SDK,为开发者提供全平台互动、海量并发、超低延时、消息必达的通信服务,具体请参考 即时通讯

示例源码下载

请参考 下载示例源码 获取源码。

相关源码请查看 “/page/Topics/RoomMessage/” 目录下的文件 RoomMessage.ets。

前提条件

在实现房间实时消息之前,请确保:

使用步骤

收发广播消息

  1. 发送广播消息

    调用 sendBroadcastMessage 接口向同一房间内的其他用户发送广播消息,长度不能超过 1024 字节。

    通过 ZegoIMSendBroadcastMessageResult 异步结果的返回获取消息发送结果。

    // 发送广播消息
    this.ZegoExpressInstance.sendBroadcastMessage(this.currentRoomID, this.broadMessage).then((result: ZegoIMSendBroadcastMessageResult) => {
        // 获取消息发送结果
    })
  2. 接收广播消息

    通过监听 onIMRecvBroadcastMessage 的事件回调,当发送方成功发送广播消息后,同一房间内的其他用户通过此回调接收相关信息,包括消息内容、消息 ID、发送时间及发送方信息。

    // 收到其他用户发送消息
    this.ZegoExpressInstance.on('onIMRecvBroadcastMessage', (roomID: string, messageList: ZegoBroadcastMessageInfo[]) => {
        if(messageList.length >0)
        {
            this.logInfo('onIMRecvBroadcastMessage. roomID: ' + roomID + ", message: "  + messageList[0].message)
        }
    })

收发弹幕消息

  1. 发送弹幕消息

    调用 sendBarrageMessage 接口向同一房间内的其他用户发送弹幕消息,长度不能超过 1024 字节。

    通过 ZegoIMSendBarrageMessageResult 异步结果的返回获取消息发送结果。

    // 发送房间弹幕消息
    this.ZegoExpressInstance.sendBarrageMessage(this.currentRoomID, this.barraMessage).then((result: ZegoIMSendBarrageMessageResult) => {
        // 获取消息发送结果
    })
  2. 接收弹幕消息

    通过监听 onIMRecvBarrageMessage 的事件回调,当发送方成功发送弹幕消息后,同一房间内的其他用户通过此回调接收相关信息,包括消息内容、消息 ID、发送时间及发送方信息。

    // 收到其他用户发送消息
    this.ZegoExpressInstance.on('onIMRecvBarrageMessage', (roomID: string, messageList: ZegoBarrageMessageInfo[]) => {
        if(messageList.length >0)
        {
            this.logInfo('onIMRecvBarrageMessage. roomID: ' + roomID + ", message: "  + messageList[0].message)
        }
    })

收发自定义信令

  1. 发送自定义信令

    调用 sendCustomCommand 接口向同一房间内通过 “toUserList” 指定的用户发送自定义信令,长度不能超过 1024 字节。

    通过 ZegoIMSendCustomCommandResult 异步结果的返回获取消息发送结果。

    // 发送自定义信令,`toUserList` 中指定的用户才可以通过 IMRecvCustomCommand 事件收到此信令
    // 若 `toUserList` 参数不传, 则 SDK 将发送该信令给房间内所有用户
    this.ZegoExpressInstance.sendCustomCommand(this.currentRoomID, this.customMessage, this.currentSelectUserIDList);
  2. 接收自定义信令

    通过监听 onIMRecvCustomCommand 的事件回调,当发送方成功发送自定义信令后,同一房间内的指定用户通过此回调接收相关信息,包括消息内容和消息发送方信息。

    // 收到其他用户发送消息
    this.ZegoExpressInstance.on('onIMRecvCustomCommand', (roomID: string, fromUser: ZegoUser, command: string) => {
        this.logInfo('onIMRecvCustomCommand. roomID: ' + roomID + ", message: "  + command)
    })

Previous

房间连接状态说明

Next

音量变化与音频频谱