Unless your app is made only for messaging you are good with pusher/ pubnub .
I have been using pusher for real time messaging in production for around a year and I couldn't be more happy about it . It didn't take much engineering effort from our side and it is built to scale .
Messaging was a side feature in our app I thought using so much engineering resource on the feature was not feasible to a small scale startup like us .
So, According to your customization needs , priority , resource (both time and talent ) you can decide what to choose .