Voir également cette présentation au NDC 2013 de David Fowler et Damian Edwards intitulée `` Sous les couvertures avec ASP.NET SignalR '' où ils construisent une version allégée de SignalR en direct sur scène. C'est très instructif. C'est pré 2.0 mais cela ne devrait pas avoir beaucoup d'importance. vimeo.com/68383353
Johan B
Réponses:
241
Non, SignalR est une abstraction sur une connexion. Il vous donne deux modèles de programmation sur cette connexion (hubs et connexions persistantes). SignalR a un concept de transports, chaque transport décide comment les données sont envoyées / reçues et comment elles se connectent et se déconnectent.
SignalR a quelques transports intégrés:
WebSockets
Événements envoyés par le serveur
Cadre pour toujours
Long sondage
SignalR essaie de choisir la "meilleure" connexion prise en charge par le serveur et le client (vous pouvez également le forcer à utiliser un transport spécifique).
C'est le niveau élevé. Si vous souhaitez voir comment chaque transport est implémenté, vous pouvez consulter le code source .
Si vous demandez comment fonctionne le long transport d'interrogation en particulier:
Il envoie une requête ajax au serveur qui attend de manière asynchrone qu'un signal réponde. Lorsqu'il y a un signal ou que la demande expire, elle revient du serveur et envoie une autre demande et le processus se poursuit. (J'ai laissé quelques détails sur la façon dont le client suit ce qu'il a vu pour ne pas manquer de messages)
J'espère que cela répond à la plupart de votre question.
pouvez-vous me dire combien de connexions il peut prendre en charge en même temps?
Farhad-Taran
1
Le nombre de connexions que Signalr va prendre en charge dépend de la limite de demande de l'IIS. Il peut être augmenté à l'aide d'entrées de configuration ou de scripts shell. Généralement, Signalr met en cache 1000 connexions en mémoire.
Thanigainathan
1
Comme déjà mentionné, le rallye limite se situe au niveau du serveur. Damnien Edwards (co-créateur de SignalR) a obtenu 150000 connexions à partir d'un seul serveur de 10 Go: twitter.com/DamianEdwards/status/486642486350061568
@davidfowl a déjà répondu à la majeure partie. Cependant, pour fournir quelques détails supplémentaires concernant la différence de comportement des transports, en particulier entre WebSocket et d'autres transports; Voici quelques points.
WebSocket est le seul transport qui établit une véritable connexion bidirectionnelle persistante entre le client et le serveur. Cependant, WebSocket n'est pris en charge que par IIS 8 ou supérieur, et les dernières versions d'Internet Explorer, Google Chrome et Mozilla Firefox.
Alors que les événements envoyés par le serveur, Forever Frame et Long polling, les trois suivent une communication unidirectionnelle et sont pris en charge par la plupart des navigateurs.
Réponses:
Non, SignalR est une abstraction sur une connexion. Il vous donne deux modèles de programmation sur cette connexion (hubs et connexions persistantes). SignalR a un concept de transports, chaque transport décide comment les données sont envoyées / reçues et comment elles se connectent et se déconnectent.
SignalR a quelques transports intégrés:
SignalR essaie de choisir la "meilleure" connexion prise en charge par le serveur et le client (vous pouvez également le forcer à utiliser un transport spécifique).
C'est le niveau élevé. Si vous souhaitez voir comment chaque transport est implémenté, vous pouvez consulter le code source .
Il existe également un code client pour chaque transport: https://github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Client.JS
Si vous demandez comment fonctionne le long transport d'interrogation en particulier:
Il envoie une requête ajax au serveur qui attend de manière asynchrone qu'un signal réponde. Lorsqu'il y a un signal ou que la demande expire, elle revient du serveur et envoie une autre demande et le processus se poursuit. (J'ai laissé quelques détails sur la façon dont le client suit ce qu'il a vu pour ne pas manquer de messages)
J'espère que cela répond à la plupart de votre question.
la source
@davidfowl a déjà répondu à la majeure partie. Cependant, pour fournir quelques détails supplémentaires concernant la différence de comportement des transports, en particulier entre WebSocket et d'autres transports; Voici quelques points.
la source