socket websocket socket.io signals pubnub ably-realtime

websocket vs http



Pusher vs Pubnub vs código abierto Socket.io/SignalR.net/Faye/jWebSocket (1)

Estoy evaluando Pusher y PubNub en este momento para habilitar las comunicaciones bidireccionales en tiempo real entre mis clientes principalmente web y mis servidores. Ambos se ven impresionantes, con los documentos de Pusher que parecen ser mejores, y la escalabilidad y confiabilidad de PubNub claramente es un punto fuerte para ellos.

Sin embargo, como estoy administrando un presupuesto, me preocupa que los costos de Pusher & PubNub puedan convertirse en un problema para nosotros, y por lo tanto, estoy considerando usar una de las alternativas de código abierto que hay. He mirado principalmente a Socket.io, Faye y jWebSocket.

Aunque tengo mis preocupaciones al ejecutar el servicio yo mismo:

  • ¿Alguien realmente ha escalado un Socket.io u otra solución de código abierto a múltiples servidores antes? ¡PubNub afirma tratar con mensajes de 1M por segundo! , Dudo algo de que Socket.io pueda hacer eso sin una cantidad insondable de servidores, si eso funcionara en absoluto.
  • ¿Hay características en los servicios pagos que probablemente voy a perder en el futuro si utilizo las soluciones de código abierto?
  • ¿La latencia realmente va a ser una preocupación si tengo mi servidor en AWS de todos modos? PubNub se encuentra en varias ubicaciones, así que espero que esto reduzca la latencia, aunque si un mensaje debe enviarse desde EE. UU. A Japón, tener un servidor en Japón no ayudaría con la latencia, ya que todavía necesita viajar allí de una forma u otra.

Gracias por el consejo.


Faye usando Node.js fue muy fácil de configurar para mí y al principio funcionó muy bien en las pruebas. Sin embargo, aunque la carga en mi aplicación es de solo 10 solicitudes por segundo con alrededor de 3000 conexiones abiertas, cuando lo cambié a live node.js, el uso de la CPU estaba fijado al 100% (1 núcleo de 8 disponible en mi cuadro). Estaba un poco decepcionado por esto y esperaba más.

Consideré usar redis o ejecutar más de una instancia de nodo en diferentes puertos y luego dividir la carga al final de mi aplicación, pero al mirar los precios de PubNub me pareció mucho más fácil simplemente descargarles todo esto.

Después de probar tanto Pusher como PubNub, encontré que PubNub era a la vez más económico y de latencia mucho menor para mí (estoy alojado en Singapur y mientras Pusher era ~ 500ms para mí, PubNub tenía ~ 250ms ida y vuelta desde mi aplicación). Si está alojado en los Estados Unidos, la diferencia probablemente sea mucho menor.

También miré Ape-Server pero no encontré ningún buen tutorial / documentación para configurar un modelo de publicación / suscripción así que lo salté, pero tal vez seas más inteligente que yo y tenga una mejor experiencia :)