# sendCustomCmdMsg method Null safety

Future<bool?> sendCustomCmdMsg(

1. int cmdID,
2. String data,
3. bool reliable,
4. bool ordered

)

发送自定义消息给房间内所有用户

该接口可以借助音视频数据通道向当前房间里的其他用户广播您自定义的数据，但因为复用了音视频数据通道， 请务必严格控制自定义消息的发送频率和消息体的大小，否则会影响音视频数据的质量控制逻辑，造成不确定性的问题。

参数：

cmdID 消息 ID，取值范围为1 - 10

data 待发送的消息，最大支持1KB（1000字节）的数据大小。

reliable 是否可靠发送，可靠发送的代价是会引入一定的延时，因为接收端要暂存一段时间的数据来等待重传

ordered 是否要求有序，即是否要求接收端接收的数据顺序和发送端发送的顺序一致，这会带来一定的接收延时，因为在接收端需要暂存并排序这些消息。

返回：

true：消息已经发出；false：消息发送失败

本接口有以下限制：

- 发送消息到房间内所有用户（暂时不支持 Web/小程序端），每秒最多能发送30条消息。

- 每个包最大为1KB，超过则很有可能会被中间路由器或者服务器丢弃。

- 每个客户端每秒最多能发送总计8KB数据。

- 将 reliable 和 ordered 同时设置为 true 或 false，暂不支持交叉设置。

- 强烈建议不同类型的消息使用不同的 cmdID，这样可以在要求有序的情况下减小消息时延。

## Implementation

    Future<bool?> sendCustomCmdMsg(
        int cmdID, String data, bool reliable, bool ordered) {
      return _channel.invokeMethod('sendCustomCmdMsg', {
        "cmdID": cmdID,
        "data": data,
        "reliable": reliable,
        "ordered": ordered,
      });
    }