发送一对一(1v1)消息和群组消息

本文介绍客户端与服务端在实现一对一(1v1)消息发送及群组消息发送时所使用的接口。

服务端发送消息接口

  • 服务端群组消息发送接口

    接口文档请参见SendLiveMessageGroup - 发送消息到群组

    重要
    1. 使用该接口,需要确保群组处于活跃状态。如果没有活跃用户会提示:群组不存在,或不处于活跃状态。

      • 群组活跃状态:该群当前有活跃的客户端。客户端进入群组时该客户端登录会话(Session)的状态,如果用户关闭应用程序后重新登录,系统将为该用户创建一个新的会话。

      • 活跃客户端:客户端已完成登录,并且保持在线。

    2. 服务端发送消息,不经过安全审核。

      1. 自定义消息体格式建议与客户端保持一致。自定义消息请参见消息体

      2. 发送者ID及发送者扩展信息:服务端发送消息,可以用于业务服务模拟某个用户发送消息,也可以用于发送其他系统消息。不校验发送者ID,不要求发送者ID是真实用户ID,更不需要该ID在线。发送者信息,会与消息内容一起,发送到接收端。建议发送者扩展信息与普通用户的扩展信息定义保持一致。发送者ID及扩展信息请参见自定义消息发送者及头像

      3. 消息类型,建议业务系统保持一致的消息类型定义。自定义消息请参见消息体

      4. StaticsIncrease,这个字段,服务端会根据这个值,该消息类型的计数值会增长该值。可以实现一些特定的业务场景。比如提升直播间人气,点赞+10次,只需要将StaticsIncrease设置为10,消息类型设置为您定义的点赞消息的类型。

      5. NoStorage,设置这个值为true,表示该消息不需要存储。建议对于不必要的消息,如您业务定义的系统类消息,不做存储。存储涉及成本开销,建议合理使用。

      6. NoCache,设置这个值为true时,表示不缓存该消息。客户端登录加入群组后,可以调用获取群最近消息,得到群最近的缓存消息。如果该消息不需要新进直播群的用户获取到,设置该值为true。

  • 服务端发送1v1消息

    接口文档请参见SendLiveMessageUser - 发送消息给指定用户

    重要
    • 该接口需要接收端在线,如果接收端当前不在线,发送将会失败。

    • 该接口是一个异步接口,无法保证消息发送成功,但客户端接收成功。

      具体rootcause如下:客户端异常断开(没有调用登出接口),服务端感知客户端心跳超时(心跳超时约90秒),服务端认为接收端在线。

    • 对于高可靠需求场景,可以使用同步发送消息接口。

客户端发送消息接口

  1. 发送群组消息,客户端首先需要完成登录过程以生成会话(Session)。通过调用加入群组的接口来成为该群组的成员。

    加入群组的是基于当前登录后所建立的Session的状态。当用户执行断开连接、关闭应用程序或主动调用退出等操作时,当前的Session将会终止,与此同时,与该Session相关联的所有状态信息也将自动被清除。

  2. 发送群组消息时,如果成员被禁言,则会受到限制。 但群组管理员和群组创建者不受此禁言规则的约束。

  3. 消息可以选择是否进行安全审核,详情请参见安全审核

    • 若安全审核未通过,则会向客户端返回消息发送失败的通知。

    • 使用安全审核功能会产生一定的费用,请根据实际需求合理利用。

  4. 连续点赞等行为,可以使用StaticsIncrease字段来实现。该字段的功能与服务端消息发送接口保持一致。详细信息请参见客户端发送消息接口