A fun idea is to do away with the "guild" servers in the architecture and simply run message passes from the websocket process over the Manifold system. A little bit of ETS work should make this doable and now an eager sending process is paying for the work itself, slowing it down. This is exactly the behavior you want. If you are bit more sinister you also format most of the message in the sending process and makes…
The true evil approach is to send the socket around, not the message, so that there is no copying required no matter what ;)
That is cool trick though. So it's basically sending the port itself around and changing its ownership, with something like port_connect(Port,NewOwner)?
And btw, thank you for writing https://www.erlang-in-anger.com and http://learnyousomeerlang.com !