私はクライアント XMPP を持っていますが、CONNECTION_DRAINING メッセージを受信したことがないので、負荷分散を実行するために CCS が接続を閉じる必要がある正確な頻度はどれくらいですか?
これは、CONNECTION_DRAINING メッセージを受信したかどうかを確認するコードの一部です。
............................... more code
def message_callback(session, message):
global unacked_messages_quota
gcmData = message.getTags('data:gcm')
if gcmData:
print "alert, the connection is being drained and will be closed soon !!!!!!!!!!!!!"
gcm = message.getTags('gcm')
if gcm:
gcm_json = gcm[0].getData()
msg = json.loads(gcm_json)
if not msg.has_key('message_type'):
# Acknowledge the incoming message immediately.
send({'to': msg['from'],
'message_type': 'ack',
'message_id': msg['message_id']})
.......................................................... more code
https://developers.google.com/cloud-messaging/ccsからドキュメントを読みました
特にこの部分
負荷分散を実行するために、CCS は定期的に接続を閉じる必要があります。接続を閉じる前に、CCS は CONNECTION_DRAINING メッセージを送信して、接続がドレインされており、すぐに閉じられることを示します。「排出」とは、接続に入るメッセージの流れを遮断することを指しますが、パイプラインに既にあるものは何でも続行できるようにします。CONNECTION_DRAINING メッセージを受信したら、すぐに別の CCS 接続へのメッセージの送信を開始し、必要に応じて新しい接続を開始する必要があります。ただし、元の接続を開いたままにして、接続を介して来る可能性のあるメッセージを受信し続ける (およびそれらに ACK を送信する) 必要があります。
CONNECTION_DRAINING メッセージは次のようになります。
<message>
<data:gcm xmlns:data="google:mobile:data">
{
"message_type":"control"
"control_type":"CONNECTION_DRAINING"
}
</data:gcm>
</message>