Reduce number of connections to Redis to one per server instead of one per HTTP socket session
HTTP socket server properly refreshes its presence in Redis to avoid losing connections when server instances is overloaded on CPU and misses the refresh interval
Device connections are correctly updated for devices and organizations. It will show correct connections in the Box UI on the device detail page and in the organization monitoring page.
delay action requeue - preventing immediate action requeueing when processAction fails for some reason. In that case immediate requeueing could block the eventloop. Happening fe. when device send action to the session associated with partially closed socket (listener still present but socket has been removed from the StatsProvider already ) - ~10000+actions/sec were processed for 30sec (till socket was closed due to not receiving ping) in that case
WebSocket hostname determination doesn't use origin and referer headers anymore because they can be easily spoofed. Only x-forwarded-host and host headers are used now.
Database connection for deviceConnection, deviceTimeout and socketRate models to DragonFly
Increase limit for device on Applet Dispatch Commands to 5/s instead of 1/s
Include responseQueueName in actions sent from device to platform so that DC can respond directly to the same instance of platform that sent the action. This prevents unnecessary load on all platform instances when only one instance needs to handle the response and especially it reduces the load on RabbitMQ as well as network traffic between services.
Optimized large payload handling in /http-socket/transmit-messages by streaming JSON with stream-json package, preventing memory overflow and PayloadTooLargeError error
Export metrics sos_platform_incoming_messages_bytes_total and sos_platform_outgoing_messages_bytes_total that track how many bytes were sent/received to/from devices