I have had a very good experience with Pusher before , it minimized all my engineering efforts on developing the feature , you could try their recently released chatkit as well . As option goes you could go with applozic/ sendbird as well .
You can also use quickblox, very easy to integrate and understand and also support additional features for more interactive like notification, push-notification and son on.