The interface abstracts websockets as raw data streams
and is designed to allow multiple styles of usage; in
particular, is adapted for io-stream-style usage and
distributed-process-style usage. It is designed to fit
in unintrusively in larger frameworks, and adaptable for
other interfaces (like pipes).

Typed dynamic communication channels with
tagged-binaryhttp://hackage.haskell.org/package/tagged-binary;
channels looking for a specific type skip over input of
the wrong type, and channels looking for the other type
can pick them up later or in parallel.