Les Websockets HTML5 sont (et depuis un certain temps ) un sujet brûlant car elles permettent élégamment en temps réelPush côté serveur .
J'ai actuellement une application qui fonctionne avec des websockets alimentés par Tomcat 7.0.30 qui comprend support websocket . Mais le déplacer vers un environnement de production soulève des questions.
Je voudrais principalement connaître le nombre maximal possible de connexions pouvant fonctionner (être ouvert) simultanément par session de navigation; a session de navigation implique un seul onglet ou une seule fenêtre de navigateur.
Les connexions WebSocket ouvertes représentent-elles le nombre maximal de connexions pouvant être traitées simultanément par le serveur Web? Par exemple. MaxClients
dans Apache.
Inversement, le nombre maximum de websockets pour une seule session de navigation est-il limité par le navigateur lui-même? Comme le montre cette article de blog , jusqu'en avril 2012, différents navigateurs prennent en charge différentes quantités de ouvert connexions websocket. (Personnellement, je viserais 1 websocket ouvert par session de navigation; mais cette information serait toujours bonne à savoir).
TL/DR:
ws:
et wss:
Connexions?Il n'y a pas de spécification standard de valeur par défaut max-connections pour les navigateurs. Cela dépend de l'implémentation [0]. De plus, l'utilisation de plus d'une socket Web par session de navigation pour la même application semble exagérée car vous pouvez utiliser les canaux pub/sub.
Le goulot d'étranglement pour les connexions se trouve généralement côté serveur. Web-socket est une mise à niveau vers HTTP, donc les connexions ne sont que des connexions HTTP (TCP) mises à niveau [1] .HTTPS et WSS ajoutent juste une couche de sécurité à la connexion normale. Ce ne sont pas des connexions différentes [2]. Dans votre cas, vérifiez maxConnections (et maxThreads ) [3] et votre Maximum du système d'exploitation [4] [5]. Si vos connexions simultanées atteignent des dizaines de milliers, vous devriez peut-être commencer à penser à l'équilibrage de charge ou au clustering [6].
[0] https://code.google.com/p/chromium/issues/detail?id=8532
[1] http://en.wikipedia.org/wiki/WebSocket
[2] http://en.wikipedia.org/wiki/HTTP_Secure
[3] http://Tomcat.Apache.org/Tomcat-7.0-doc/config/http.html
[6] http://Tomcat.Apache.org/Tomcat-7.0-doc/config/cluster.html
En savoir plus sur la simultanéité élevée: http://www.kegel.com/c10k.html
Dans Gecko 7, ils ont introduit le paramètre network.websocket.max-connections
vous pouvez le définir dans about:config
. Il définit le nombre maximal de connexions Websocket "à la fois" selon ceci: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
Je ne sais pas si vous pouvez déterminer ce nombre à partir du code et s'il existe un moyen de déterminer combien sont ouverts dans d'autres sessions (donc combien il vous en reste).