| Cocoa-websocket doesn't seem to support the latest standard[1]. You can tell because the handshake has key1 and key2 which is protocol 00[2] Re: socket.IO, I haven't actually used it, so correct me if my assumptions are wrong, but the objc client doesn't seem to use WebSockets as a transport. So I imagine you can get the same bidirectional semantics if by using socket.IO-objc if you want to limit yourself to servers written in node (or have a socket.IO bridge). However, why not go with standards? Since socket.IO supports websockets, the objc implementation could be backed by SocketRocket easily. My two biggest complaints against Unitt & cocoa-websocket aside from them not supporting RFC6455 is having CocoaAsyncSocket as a dependency. I've dug deep into it's implementation, and even had a prototype of SocketRocket that used it (basically went from CocoaAsync to dispatch_io to CFStream), and I'm not too impressed. Also, CocoAsync 2x or 3x more code than the entire WebSocket implementation without it. It also has drastically different codepaths for iOS and Cocoa and it's very difficult to see what's going on. Makes testing more difficult. The other reason I decided to roll my own is just a learning experience. At first I wanted an excuse to play with new libdispatch io stuff[3]. [1] https://github.com/samlown/cocoa-websocket/blob/master/WebSo... [2] http://en.wikipedia.org/wiki/WebSocket#draft-ietf-hybi-thewe... [3] http://www.opensource.apple.com/source/libdispatch/libdispat... |