telegram.org 服务器返回的错误代码 35 是什么
What is error code 35, returned by the telegram.org server
我的客户端经常从电报服务器收到以下消息容器,看似随机:
{'MessageContainer': [{'msg': {u'bad_msg_notification': {u'bad_msg_seqno': 4, u'bad_msg_id': 6330589643093583872L, u'error_code': 35}}, 'seqno': 4, 'msg_id': 6330589645303624705L}, {'msg': {u'msgs_ack': {u'msg_ids': [6330589643093583872L]}}, 'seqno': 4, 'msg_id': 6330589645303639041L}]})
您可能注意到:'error code': 35 上面,但是没有说明该错误代码的含义。到目前为止,我一直忽略它,但这不是一个好的长期解决方案恕我直言。知道该错误代码的含义吗?
正如Telegram API docs所说,代码35的错误是"odd msg_seqno expected (relevant message), but even received"
有一组错误与 bad_msg_seqno
来自文档:
Here, error_code can also take on the following values:
- msg_seqno too low (the server
has already received a message with a lower msg_id but with either a
higher or an equal and odd seqno)
- msg_seqno too high (similarly,
there is a message with a higher msg_id but with either a lower or
an equal and odd seqno)
- an even msg_seqno expected (irrelevant
message), but odd received
- odd msg_seqno expected (relevant
message), but even received
正式定义: Message Sequence Number (msg_seqno)
a 32-bit number equal to twice the number of “content-related”
messages (those requiring acknowledgment, and in particular those that
are not containers) created by the sender prior to this message and
subsequently incremented by one if the current message is a
content-related message. A container is always generated after its
entire contents; therefore, its sequence number is greater than or
equal to the sequence numbers of the messages contained in it.
备注:
- 每个新会话从 seq_no = 1 --> (0 * 2) + 1
开始
- 您发送的每个序列号计算如下:(number_of_content_messages_ already_sent * 2) + 1 因此您发送的所有序列号总是奇数
- 容器消息seq_no == 其内容消息的最大值seq_no
- 服务器将始终用正确的
server_seq_no
回复您,这应该比您的 正确 最大值大 1 seq_no 到目前为止。
- 因此,一个好的检查/seq_no 更正方案是使用最新收到的
server_seq_no
(应该始终是偶数)来确认您的 current-expected
seq_no应该是,并根据需要进行调整。
上述技术对我有效,可以完全避免这些间歇性的错误消息。
我的客户端经常从电报服务器收到以下消息容器,看似随机:
{'MessageContainer': [{'msg': {u'bad_msg_notification': {u'bad_msg_seqno': 4, u'bad_msg_id': 6330589643093583872L, u'error_code': 35}}, 'seqno': 4, 'msg_id': 6330589645303624705L}, {'msg': {u'msgs_ack': {u'msg_ids': [6330589643093583872L]}}, 'seqno': 4, 'msg_id': 6330589645303639041L}]})
您可能注意到:'error code': 35 上面,但是没有说明该错误代码的含义。到目前为止,我一直忽略它,但这不是一个好的长期解决方案恕我直言。知道该错误代码的含义吗?
正如Telegram API docs所说,代码35的错误是"odd msg_seqno expected (relevant message), but even received"
有一组错误与 bad_msg_seqno
来自文档:
Here, error_code can also take on the following values:
- msg_seqno too low (the server has already received a message with a lower msg_id but with either a higher or an equal and odd seqno)
- msg_seqno too high (similarly, there is a message with a higher msg_id but with either a lower or an equal and odd seqno)
- an even msg_seqno expected (irrelevant message), but odd received
- odd msg_seqno expected (relevant message), but even received
正式定义: Message Sequence Number (msg_seqno)
a 32-bit number equal to twice the number of “content-related” messages (those requiring acknowledgment, and in particular those that are not containers) created by the sender prior to this message and subsequently incremented by one if the current message is a content-related message. A container is always generated after its entire contents; therefore, its sequence number is greater than or equal to the sequence numbers of the messages contained in it.
备注:
- 每个新会话从 seq_no = 1 --> (0 * 2) + 1 开始
- 您发送的每个序列号计算如下:(number_of_content_messages_ already_sent * 2) + 1 因此您发送的所有序列号总是奇数
- 容器消息seq_no == 其内容消息的最大值seq_no
- 服务器将始终用正确的
server_seq_no
回复您,这应该比您的 正确 最大值大 1 seq_no 到目前为止。 - 因此,一个好的检查/seq_no 更正方案是使用最新收到的
server_seq_no
(应该始终是偶数)来确认您的current-expected
seq_no应该是,并根据需要进行调整。
上述技术对我有效,可以完全避免这些间歇性的错误消息。