实时音视频
  • iOS
  • Android : Java
  • macOS
  • Windows
  • HarmonyOS
  • Linux
  • Web
  • 小程序
  • Flutter
  • Electron
  • Unity3D
  • uni-app
  • React Native
  • Cocos2D
  • 产品简介
  • 下载
  • 体验 App
  • 快速开始
    • 跑通示例源码
    • 集成 SDK
    • 实现视频通话
    • 实时音视频 SDK 与实时语音 SDK 差异
    • 场景化音视频配置
  • 基础功能
  • 进阶功能
  • 最佳实践
  • 常见错误码
  • 服务端 API
  • 客户端 API
  • 常见问题

实时消息与信令

更新时间:2022-09-01 17:09

1 功能简介

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

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

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

2 示例源码下载

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

相关源码请查看 “/ZegoExpressExample/CommonFeatures/src/main/java/im/zego/roommessage” 目录下的文件。

3 前提条件

在发送实时消息前,请确保:

4 使用步骤

4.1 发送消息

  • 发送广播消息

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

    通过 onIMSendBroadcastMessageResult 回调获取消息发送结果。

    // 发送广播消息,每个登录房间的用户都会通过 onIMRecvBroadcastMessage 回调收到此消息【发送方不会收到该回调】
    engine.sendBroadcastMessage(roomID, msg, new IZegoIMSendBroadcastMessageCallback() {
        /** 发送广播消息结果回调处理 */
        @Override
        public void onIMSendBroadcastMessageResult(int errorCode, long messageID) {
             //发送消息结果成功或失败的处理
        }
    });
  • 发送弹幕消息

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

    通过 onIMSendBarrageMessageResult 回调获取消息发送结果。

    engine.sendBarrageMessage("ChatRoom-1", "This is a barrage message", new IZegoIMSendBarrageMessageCallback(){
        /** 发送弹幕消息结果回调处理 */
        @Override
        public void onIMSendBarrageMessageResult(int errorCode, String messageID) {
             //发送消息结果成功或失败的处理
        }
    });
  • 发送自定义信令

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

    通过 onIMSendCustomCommandResult 回调获取消息发送结果。

    // 发送自定义信令,`toUserList` 中指定的用户才可以通过 onIMSendCustomCommandResult 收到此信令
    // 若 `toUserList` 参数传 `null` 则 SDK 将发送该信令给房间内所有用户
    engine.sendCustomCommand(roomID, command, toUserList, new IZegoIMSendCustomCommandCallback() {
        /** 发送用户自定义消息结果回调处理 */
        @Override
        public void onIMSendCustomCommandResult(int errorCode) {
            //发送消息结果成功或失败的处理
        }
    });

4.2 接收消息

  • 接收广播消息

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

    public abstract class IZegoEventHandler {
    
        /**
         * 接收房间广播消息通知
         *
         * @param roomID 房间 ID
         * @param messageList 收到的消息列表
         */
        public void onIMRecvBroadcastMessage(String roomID, ArrayList<ZegoBroadcastMessageInfo> messageList){
            // 收到其他用户发送消息的处理
        }
    
    }
  • 接收弹幕消息

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

    public abstract class IZegoEventHandler {
    
        /**
         * 接收房间弹幕消息通知
         *
         * @param roomID 房间 ID
         * @param messageList 收到的消息列表
         */
        public void onIMRecvBarrageMessage(String roomID, ArrayList<ZegoBarrageMessageInfo> messageList){
            // 收到其他用户发送消息的处理
        }
    
    }
  • 接收自定义信令

    实现 IZegoEventHandler 代理中的 onIMRecvCustomCommand 回调,当发送方成功发送自定义消息后,同一房间内的指定用户通过此回调接收相关信息,包括消息内容和消息发送方信息。

    public abstract class IZegoEventHandler {
    
        /**
         * 接收自定义信令通知
         *
         * @param roomID 房间 ID
         * @param fromUser 信令的发送人
         * @param command 信令内容
         */
        public void onIMRecvCustomCommand(String roomID, ZegoUser fromUser, String command){
            // 收到其他用户发送消息的处理
        }
    
    }

5 API 参考列表

方法 描述
sendBroadcastMessage 发送房间广播消息
onIMSendBroadcastMessageResult 发送房间广播消息的回调
onIMRecvBroadcastMessage 接收房间广播消息通知
sendBarrageMessage 发送房间弹幕消息
onIMSendBarrageMessageResult 发送房间弹幕消息的回调
onIMRecvBarrageMessage 接收房间弹幕消息通知
sendCustomCommand 发送自定义信令
onIMSendCustomCommandResult 发送房间自定义信令的回调
onIMRecvCustomCommand 接收自定义信令通知