I have done this quite a few times with PyObjC and Twisted.
It is quite easy to embed Twisted into a Cocoa app via PyObjC. It is even possible to inject said solution into a Cocoa app that is already running.
Because of the design of Twisted, the I/O happens on a thread, but the actual request handling happens in the main event loop. As a result, there is no need to deal with threading issues.
Combined with Nevow and MochiKit, one can relatively easily develop rich web based clients to your Cocoa app's internals.