The play API is far less clear and doesn't seem to add any value. It's like they've created a bunch of special classes to do things that could have just been written in scala. Formatting the message is a good example, with socket.io it's just a plain old function call. With play you have to create an "adaptor", which appears to be a function but is wrapped in some special case wrapper called an Enumeratee. As for the names, if you have to explain what every class is actually for you've done a pretty poor job in choosing the names. The socket.io API seems vastly superior, it allows you to do exactly the same thing is smaller and clearer whilst having all the power and perhaps, less restrictions. Sorry for the rant but with so many good examples of APIs (particularly for web interactions) the play API really should be better.