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 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: ENG-2060