What did you end up using ? Have you heard of Layer?
After trying to find a solution earlier this year with my product manager, we decided to just stick to what we had (which was simply manual refresh in the messaging view by the user), due to engineering time/cost.
Since messaging is not a top priority in the app, we agreed to come back to the problem in the future. However, it is absolutely something I would like to solve given the chance. However, at the end of the day, this kind of messaging solution requires the work of backend engineers which will take up development time.