SockJS tiene más opciones del lado del servidor disponibles. Si no quieres estar ligado a Node.js, entonces puede ser una opción. La escala parece funcionar mejor, a partir de algunos puntos de referencia que usan PyPy para alojar la porción del lado del servidor.
socket.io tiene más opciones de transporte, que incluyen Flash. Incluso si no le gusta el flash, tiene la opción de real WebSocket transport, que puede funcionar mejor según sus deseos de implementación.
El hecho es que cualquiera de las dos cosas hará su trabajo, solo depende de sus deseos. Sugeriría crear una aplicación trivial en cada uno, y ver si las API de uno se sienten más naturales para ti.
Personalmente, estoy más inclinado a usar socket.io ... También diré que si necesita escalar usando clústeres, probablemente también necesite trazar una estrategia para usar un servidor de pub/sub (como redis) ya que diferentes solicitudes pueden llegar a procesos diferentes que no comparten el estado de la memoria.
También digno de mención, es que existe un marco similar para .Net llamado SignalR ...
No debe simplemente cambiar todas las atrae hacia pushs. Hay una razón por la que ambos existen. Solo use contenido push si es necesario o útil para la experiencia del usuario. – Alp
Trate de separar sus preguntas y hacerlas menos "objetivas". Posiblemente muestre cualquier investigación sobre el tema que ya haya realizado (esto es para evitar que su problema sea cerrado como no constructivo) – rlemon
Hay un hilo sobre las diferencias entre SockJS y Socket.io en la lista de correo de sockjs, tal vez ayude: https://groups.google.com/forum/#!topic/sockjs/lgzxVnlth54/discussion – Marek