What we’ve used so far is libcurl making http requests to a web server (ASP.NET MVC but anything should work as long as you keep the responses a short as possible). This means you won’t actually have an opened connection all the time, but rather per request basis.
Depending on the type of game you are creating you might run into performance issues with this approach but I can tell you we’ve built a RTS game making sync requests for about 15 times per second and so far it looks good.
This approach will also enable your users to play together from both Android and IOS.
If you need more info let me know.