One of the biggest issues with socket servers is that traditionally they do not scale. The requirement to have a consistent TCP connection makes things very difficult when you want to scale. If one connection sends a message to Server A, how does that message get to a user on Server B?
The solution is to integrate with some centralized pub/sub system that is external to the socket connection system. Unfortunately, this means that if your socket layer is already heavily based on pub/sub, you will end up duplicating efforts.