Use gRPC as communication mechanism
The current implementation of the Socket.io lib we're using is quite outdated and we have encountered several bugs and missing messages.
This syncing process has to be reliable because losing any of the syncing packages may trigger a lot of problems.
Because we have worked with this kind of situations before in Gitaly and Workhorse, we have a solid codebase and knowledge, that we can reuse to build the communication using gRPC.
gRPC will remove the necessity of using Websockets, because we can have bidirectional communications. Besides, we have the benefit of streaming data without holding it all in memory.