6
votes

Les webockets (ou ajax à long terme, etc.) peuvent-ils exécuter sur un autre port différent de la demande HTTP d'origine?

Je veux écrire une application qui utilise des webockets avec node.js et socket.io associé à Django et partagera des données via ReDIS (beaucoup de mots à la mode dans cette phrase!).

Si je exécute un nœud sur un autre port (par exemple, 5555), vais-je pouvoir vous connecter avec une bande WebSocket (ou une méthode de secours avec prise. io , comme un interrogation long, etc.) ou le la même politique d'origine me donner des problèmes?

Si oui, comment puis-je me contourner?


0 commentaires

4 Réponses :


1
votes

Je ne suis pas sûr des webockets, bien que Ajax vous donnerait des problèmes avec cela. Je crois que cela pourrait être résolu en utilisant un proxy inversé vers le côté serveur cependant.


6 commentaires

Des idées sur la façon de se déplacer?


Faites des appels Ajax sur un port différent ou définissez-le afin que je puisse suivre des demandes particulières sur le serveur correct?


@Ankit Pourquoi n'avons diré d'utiliser un proxy inverse?


Websockets ne sont pas des demandes HTTP, alors les proxyant par Nginx ou quelque chose ne fonctionnerait pas.


@Ankit ils utilisent des demandes HTTP pour la main. Je ne connais pas cependant des détails depuis que je n'ai jamais utilisé Webockets.


@Ankit: Nginx prend maintenant en charge les standards avec un patch: github.com/yaoweibin/nginx_tcp_proxy_module



2
votes

socket.io prend en charge les connexions croisées (voir FAQ). Un port différent fonctionnera bien.


0 commentaires

5
votes

socket.IO prend en charge le scrutin JSONP qui est couramment utilisé pour les interrogations longs de domaine croisés (en dehors de Cors qui n'est pas pris en charge par chaque navigateur). Sur le domaine croisé concernant les webockets - Spécification états ce qui suit:

Le serveur inclut le nom d'hôte dans le | Sec-Websocket-location | domaine de sa poignée de main, de sorte que la fois le Le client et le serveur peuvent vérifier qu'ils sont d'accord sur quel hôte est dans utiliser.

Vous "devrait" pouvoir utiliser Webockets avec un port différent, vous n'avez probablement aucun autre choix car les ports standard tels que 80 seront utilisés par d'autres serveurs Web pour servir votre application basée sur Django. Il y aura également des problèmes potentiels avec le navigateur spécifique Connexion parallèle Limites Si vous utilisez le même domaine et le même port (par exemple, vous pouvez le voir dans la discussion Facebook lorsque vous essayez d'ouvrir plusieurs onglet dans le même contexte de navigateur - chaque onglet est connecté à différents sous-domaines lors de la surmontée ces limites).


0 commentaires

3
votes

La réponse est "parfois". Sa très grande politique de navigateur et de sécurité spécifique.

En supposant que vous utilisiez Socket.io ... Je n'ai eu aucun problème, sauf dans l'opéra où il n'a pas pu contourner les règles de la SOP (la même politique d'origine). Le correctif permettait d'activer Webockets.


0 commentaires