 <p>I use <a href="https://github.com/mirek/CoreWebSocket" rel="nofollow">CoreWebSocket!</a>. It's pretty good so far. Best of all, i found it very easy to understand. It might be a good place to start.</p> <p>I also know of <a href="https://github.com/square/SocketRocket" rel="nofollow">SocketRocket</a>. Which I'm told is actually better. But I've been working with CoreWebSocket for a while now, and its working just fine to me. </p> <p>Both are pretty well documented. So I think these would be a good place to start. Let me know if you need anything else.</p> <p>Thats just the sockets though. I also have an 'always online' based application. Where the users are always online. The good thing is, sockets are persistent in the sense that you make the connection only once. For this you need some kind of turn server to figure out who's online and their credentials to connect. Once connected you can seamlessly send receive data between them with out involving an in-between server. </p> <p>If you need to be aware of what the users are sending and receiving, then its a good idea to have a server in-between, Where data is sent to the server first, and then forwarded to the appropriate users.</p> <p>The libraries above have some documentation on how they work, so you can use it to figure out some kind of architecture before you pick one of them to use.</p> <p>Good luck!</p> <p>EDIT: To be honest, sockets are meant for (in my opinion) live connections. So if you want to send and receive controls for a game or something of that sorts. The idea is that you don't need establish a new connection every time you want to send data. You make a connection once, and you can send and receive until it is closed. Is this the kind of application you're trying to make? </p>