Currently we use websockets to do all communication with the rosbridge_server. This works great for reliable connections to a robot, but under spotty WiFi conditions or with mobile hotspots, the performance can be undesireable. Specifically, users will often see "catch-up" behaviors where the queue of sent messages will be received all at once as soon as bandwidth increases unless the websocket is disconnected first. From my understanding, this is inherent to the websocket protocol. The websocket_ping_timeout does help as we can use this to disconnect and reconnect the websocket to effectively kill old messages, but it doesn't feel like a clean solution to the problem and may introduce new issues if the timeout is too short.
What is the feasibility of using UDP to send messages with rosbridge in situations where users only care about the latest messages (OK to drop old ones that fail to send/receive) and transport reliability guarantees are not needed?
Currently we use websockets to do all communication with the rosbridge_server. This works great for reliable connections to a robot, but under spotty WiFi conditions or with mobile hotspots, the performance can be undesireable. Specifically, users will often see "catch-up" behaviors where the queue of sent messages will be received all at once as soon as bandwidth increases unless the websocket is disconnected first. From my understanding, this is inherent to the websocket protocol. The
websocket_ping_timeoutdoes help as we can use this to disconnect and reconnect the websocket to effectively kill old messages, but it doesn't feel like a clean solution to the problem and may introduce new issues if the timeout is too short.What is the feasibility of using UDP to send messages with rosbridge in situations where users only care about the latest messages (OK to drop old ones that fail to send/receive) and transport reliability guarantees are not needed?