This diff introduces a pinging messages loop implementation to make sure that the stream is alive and the client is online because gRPC doesn't provide the keep-alive checks out of the box. The full context is available in the [[ https://linear.app/comm/issue/ENG-1766/make-sure-the-device-is-offline-to-send-a-notification-to-wake-it-up#comment-ec9fdf7b | ENG-1766 ]] task.
We are also changing the client's (session) online status in the database when the client became online or the stream is dropped or closed.
Linear task: [[ https://linear.app/comm/issue/ENG-2060/implement-tunnelbroker-grpc-messagesstream-api-handler-in-rust | ENG-2060 ]]