Effet
Le navigateur qui ne prend pas en charge WebSocket, utilise Flash pour simuler WebSocket.
En fait, le protocole WebSocket est relativement simple, et il est plus simple de simuler avec ActionScript.
De plus, Spring fournit des API pour SOCKJS. Je ne l'ai pas encore vu.
Certaines des descriptions:
1. L'utilisation de l'encapsulation de Spring de WebSocket peut être utilisée seule ou avec Spring MVC. Il convient de noter que lorsqu'il est utilisé seul, vous devez toujours configurer le répartiteur de Spring dans le web.xml, et vous devez toujours ouvrir le serveur.
<VerTlet> <Servlet-Name> WebSocket </ Servlet-Name> <Servlet-Class> org.springFramework.web.servlet.dispatryvlet </ servlet-Class> <Para M-Name> contextConfiglocation </ Param- name> <param -Value> /web-inf/ApplicationContext.xml </ Param-value> </ init-Param> <Choad-on-Startup> 1 </Doft-startup> </ servlet- mapping> <servlet-name> WebSocket < / Servlet-name> <url-stern> / </ url-stern> </ servlet-mapping >>
2. Lorsqu'il est utilisé seul, si vous référez le domaine croisé, vous devez définir une liste blanche au printemps
<WebSocket: Handlers Perted-Origins = "*"> ........ </ WebSocket: Handlers>
3. Étant donné que Flash est utilisé, il est nécessaire d'allumer le port 843 et de renvoyer le fichier de stratégie lorsque Flash a demandé le fichier de stratégie. L'exemple est NetTy4.
4. Vous devez intercepter et surveiller la poignée de main. Parce que dans la classe de traitement WebSocket, il est impossible d'obtenir une session à partir de WebSocket.
Classe publique ChatInterCepter étend httpSessionhandshaandshakeInterceptor {@Override public boolean avant -handshake (serverhttprequest, réponse, websockethandler wshandler, map <string, objet> attributs) exception {if (request instanceServerHTRET Demander .getServletRequest (). ("" AVANT HANDSHAKE "+ request.getheaders ()); // return super.beforeHandshake (demande, réponse, wshandler, attributs); retour true; .............
5. Dans Web-Socket-JS, les informations d'en-tête WebSocket simulées par Flash contiennent du cookie, mais il est ajouté par le script. Donc, pour éviter les cookies requis, tels que les cookies de session sont httponly.
S'il est actuellement développé dans Eclipse
On peut voir que l'ajout de usehttponly = 'false' est ajouté à la balise de contexte, et la balise de contexte est automatiquement ajoutée lorsque Eclipse est déployée.
Si vous l'avez déjà emballé, accédez au répertoire Tomcat /conf/Server.xml, ajoutez-le avant le dernier </ host>
Copier le code du code comme suit:
<Contexte docbase = "Websocket" path = "/ websocket" reloadable = "true" usehttponly = 'false' />
Le sens en est tout le contenu de cet article, j'espère que tout le monde pourra l'aimer.