Pregunta

¿Alguien puede hacerme saber cómo Funciona SignalR internamente de alto nivel?

Supongo que está enjuagando los datos usando Response.Flush y al lado del cliente está enviando solicitudes AJAX a ciertos intervalos. ¿Es correcto?

¿Fue útil?

Solución

No, SignalR es una abstracción sobre una conexión. Le ofrece dos modelos de programación sobre esa conexión (centros y conexiones persistentes). SignalR tiene un concepto de transportes, cada transporte decide cómo se envían/reciben datos y cómo se conecta y se desconecta.

Signalr tiene algunos transportes incorporados:

  1. Websockets
  2. Eventos enviados al servidor
  3. Marco para siempre
  4. Sondeo largo

SignalR intenta elegir la "mejor" conexión compatible con el servidor y el cliente (también puede obligarlo a usar un transporte específico).

Ese es el alto nivel. Si desea ver cómo se implementa cada transporte, puede ver el código fuente.

También hay código de cliente para cada transporte:https://github.com/signalr/signalr/tree/master/src/microsoft.aspnet.signalr.client.js

Si pregunta sobre cómo funciona el largo transporte de votación en particular:

Envía una solicitud AJAX al servidor que está esperando asincrónicamente para que responda una señal. Cuando hay una señal o la solicitud de salida, regresa del servidor y envía otra solicitud y el proceso continúa. (Dejé algunos detalles sobre cómo el cliente realiza un seguimiento de lo que vio para que no se pierda los mensajes)

Esperemos que eso responda la mayor parte de su pregunta.

Otros consejos

@Davidfowl ya ha respondido a la parte principal. Sin embargo, para proporcionar algunos detalles más sobre la diferencia en el comportamiento de los transportes, específicamente entre WebSocket y otros transportes; A continuación hay algunos puntos.

  • WebSocket es el único transporte que establece una verdadera conexión persistente de dos vías entre el cliente y el servidor. Sin embargo, WebSocket es compatible solo por IIS 8 o superior, y las últimas versiones de Internet Explorer, Google Chrome y Mozilla Firefox.
  • Mientras que el servidor envió eventos, Forever Frame y Long Polling, los tres siguen una comunicación unidireccional y son respaldados por la mayoría de los navegadores.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top