Much better origin handling, and use a subprotocol if the client advertises one