正在确认 telegram.org 服务器响应

Acknowledging telegram.org server responses

电报documentation指出:

Receipt of virtually all messages (with the exception of some purely service ones as well as the plain-text messages used in the protocol for creating an authorization key) must be acknowledged. This requires the use of the following service message (not requiring an acknowledgment):

msgs_ack#62d6b459 msg_ids:Vector long = MsgsAck;

暗示将确认发送回服务器,而不是发送这些确认的机制。我试图向服务器发送 MsgsAckmsgs_ack 但它们失败了,因为它们是数据类型,而不是构造函数(方法)。这引出了两个问题:

  1. 电报客户端如何将 ack 发送回服务器? (单独和作为方法调用的一部分)
  2. 电报客户端如何区分需要 ack 和不需要 ack 的服务器响应? (似乎包含 req_msg_id 的响应需要确认,但我想要确认)

解决这个问题的简单方法是:

1) 累积您从服务器收到的 msg_ids - 文档中指出的那些需要确认的消息:这些都是 内容相关的 消息, 不是服务消息

2) 每次您想向服务器发送新消息时,您可以将累积的确认消息与您打算发送的消息一起包含在消息容器中。

3) 如果你已经累积 msg_ids 在一段时间内被确认,比如 X 分钟,而没有机会通过上面的步骤 2) 清除它们,那么你可以简单地将确认消息发送回电报机智 msg_ids 列表被确认。

要发送确认,请使用:

msgs_ack#62d6b459 msg_ids:Vector<long> = MsgsAck;