Skip to content

WebSocket pong timeout - connection appears dead - Reconnection loop annoys server #83

@joseportillodev

Description

@joseportillodev

Hi developers!
Just upgraded the SinricPro iOS App to v3.17.103 to check out the new improvements. When looking at the activity log, I've discovered a message that has been appearing once in a while:

WARNING: YOUR DEVICE WITH MAC: WITH IDS: 6949****************a61c IS RESETTING THE CONNECTION TO SERVER TOO MANY TIMES. FURTHER RECONNECTION ATTEMPS ARE BLOCKED! PLEASE FIX THIS ASAP!

Image

Inspecting the logs of the device, what I find is a connection loop, always triggered by a 'WebSocket pong timeout' situation.

  • connection is CONNECTING
  • connection is OPEN
  • a few ping-pongs occur, once every minute
  • then it decides that the pong timed out
  • websocket conection is then closed
  • next reconnection attempt

Here's the log for one iteration below.
Tested on Python SDK 5.0.1 (the latest one published on PyPi)

Note: I haven't inspected network traffic but I see in the log 2 occurrences of "CLOSE 1000 (OK)" messages, so I assume both parties agreed on closing the socket, so the connection wasn't actually as dead at it appeared)

feb 19 02:51:43 raspi-lasian pysinricpro[521]: [SinricPro:INFO] Attempting to reconnect...
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - = connection is CONNECTING
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > GET / HTTP/1.1
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > Host: ws.sinric.pro
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > Upgrade: websocket
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > Connection: Upgrade
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > Sec-WebSocket-Key: KPCP...ug==
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > Sec-WebSocket-Version: 13
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > appkey: 3df3...82c1
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > deviceids: 6949****************a61c
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > platform: Python
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > SDKVersion: 5.0.1
feb 19 02:51:44 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > User-Agent: Python/3.13 websockets/15.0.1
feb 19 02:51:45 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < HTTP/1.1 101 Switching Protocols
feb 19 02:51:45 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < Server: nginx
feb 19 02:51:45 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < Date: Thu, 19 Feb 2026 01:51:44 GMT
feb 19 02:51:45 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < Connection: upgrade
feb 19 02:51:45 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < Upgrade: websocket
feb 19 02:51:45 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < Sec-WebSocket-Accept: MR1J...6Y=
feb 19 02:51:45 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - = connection is OPEN
feb 19 02:51:45 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < TEXT '{"timestamp":1771465904}' [24 bytes]
feb 19 02:51:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < PING '' [0 bytes]
feb 19 02:51:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > PONG '' [0 bytes]
feb 19 02:52:10 raspi-lasian pysinricpro[521]: root - INFO - Updating stove state...
feb 19 02:52:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < PING '' [0 bytes]
feb 19 02:52:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > PONG '' [0 bytes]
feb 19 02:53:10 raspi-lasian pysinricpro[521]: root - INFO - Updating stove state...
feb 19 02:53:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < PING '' [0 bytes]
feb 19 02:53:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > PONG '' [0 bytes]
feb 19 02:54:10 raspi-lasian pysinricpro[521]: root - INFO - Updating stove state...
feb 19 02:54:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < PING '' [0 bytes]
feb 19 02:54:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > PONG '' [0 bytes]
feb 19 02:55:10 raspi-lasian pysinricpro[521]: root - INFO - Updating stove state...
feb 19 02:55:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < PING '' [0 bytes]
feb 19 02:55:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > PONG '' [0 bytes]
feb 19 02:56:10 raspi-lasian pysinricpro[521]: root - INFO - Updating stove state...
feb 19 02:56:45 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > PING '\x10\x02<\x0f' [text, 4 bytes]
feb 19 02:56:45 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < PONG '\x10\x02<\x0f' [text, 4 bytes]
feb 19 02:56:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < PING '' [0 bytes]
feb 19 02:56:48 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > PONG '' [0 bytes]
feb 19 02:56:55 raspi-lasian pysinricpro[521]: [SinricPro:ERROR] WebSocket pong timeout - connection appears dead
feb 19 02:56:55 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > CLOSE 1000 (OK) [2 bytes]
feb 19 02:56:55 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - = connection is CLOSING
feb 19 02:56:55 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < CLOSE 1000 (OK) [2 bytes]
feb 19 02:56:55 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - < EOF
feb 19 02:56:55 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - > EOF
feb 19 02:56:55 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - = connection is CLOSED
feb 19 02:56:55 raspi-lasian pysinricpro[521]: websockets.client - DEBUG - x closing TCP connection
feb 19 02:56:55 raspi-lasian pysinricpro[521]: [SinricPro:INFO] WebSocket disconnected
feb 19 02:57:00 raspi-lasian pysinricpro[521]: [SinricPro:INFO] Attempting to reconnect...

I'm affraid there's nothing I can do about the "PLEASE FIX THIS ASAP" message as a consumer of the Python SDK.

Please tell me if you need any further detail, or packet captures, etc.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions