Les WebSockets connexion 3G
J'ai joué avec la Prise.io, node.js et les WebSockets, tous de qui je peux obtenir de bien fonctionner sur une connexion wifi.
Cependant, quand je test un WebSocket-enabled application sur une connexion 3G (sur mon iPhone, par exemple), alors il semble retomber le long du scrutin est la seule solution viable.
Avec La Prise.io la connexion échoue avec "connexion WebSocket invalide ou d'Origine non vérifié" avant de redescendre le long du scrutin.
Je ne sais pas si les WebSockets sont conçues pour fonctionner sur les réseaux 3G - quelqu'un a eu du succès en le faisant travailler comme ça? J'ai essayé un certain nombre de méthodes différentes et le tout semble échouer, ce qui me fait penser que je suis tenter l'impossible.
- Ne Socket.IO travailler sur votre iPhone via le wifi? I. e. pouvez-vous éliminer l'iPhone/iOS comme une partie du problème?
- Oui, bon point. Socket.io sur le wifi sur l'iPhone fonctionne très bien, donc c'est la 3G côté des choses, qui est le problème.
- J'ai ce problème uniquement sur l'iPhone 6 avec la 3G. Pas De Prise.io connexes, à l'aide de Tornade et de Nginx. Également sur la connexion non-SSL sur le port 80.
Vous devez vous connecter pour publier un commentaire.
Certains opérateurs de téléphonie mobile sont notoirement connu pour configurer complètement cassé transparent proxy qui vous êtes obligés de passer à travers. C'est un réel ennui que le WebSocket groupe de travail a dû faire face depuis le début. Le protocole est conçu pour assurer que ce sera un échec très rapidement en présence de ces produits afin que votre demande, vous pouvez immédiatement revenir à d'autres méthodes. Si vous trouvez que ça prend beaucoup de temps pour détecter l'anomalie et de l'automne dos, veuillez nous le signaler à la hybi groupe de travail de l'IETF, de sorte que le problème peut être diagnostiquée et traitée.
En parallèle, vous pouvez contacter votre opérateur de téléphonie mobile et demandez-leur comment vous pouvez accéder au net sans passer par l'intermédiaire de leurs brisé transparent proxy ou au moins de savoir quand ils s'attendent à obtenir cassée procurations fixe à l'appui HTTP suivant le cahier des charges. Certains d'entre eux peut vous proposer de multiples options d'accès.
Comme Willy Tarreau dit, il est cassé transparent proxies utilisés par les opérateurs de téléphonie mobile. Je suis sûr que ce n'est pas exclusif à eux (d'entreprise de la société des pare-feu par exemple). Vous pouvez contourner ce problème en utilisant un numéro de port différent (sur les opérateurs de téléphonie mobile au moins). Quelque chose d'autre que le port 80. À l'aide de SSL peut aussi travailler, mais je n'ai pas encore essayé.
Vous serez confronté à des problèmes de folk derrière un pare-feu bloquant tout, à l'extérieur des ports 80 & 443.
Écrire votre websockets application pour basculer entre le port 80, et quelques autres port sur chaque tentative de connexion, et vous avez votre hôte écouter sur ces deux ports. Ensuite, vous avez une bonne chance de se connecter au serveur. Utiliser iptables port de REDIRECTION si votre utilisation de linux pour écouter les deux ports en même temps.
Vous pouvez utiliser Server-Sent Events protocole au lieu de les WebSockets.
De l'ESS est plus simple, HTTP-compatible et peut passer par des intermédiaires.
Eu ces mêmes erreurs avec une mauvaise web socket de connexion sur certains réseaux mobiles. Résolu par;
Déplacement de ports: le Déplacement de plus de client et serveur de websocket sur le port SSL (port 443)
Ping keep-alive: l'Envoi périodique "ping" messages du client vers le serveur toutes les X secondes, et en attente d'un "pong" de retour à partir du serveur. Si le serveur ne donne pas de "pong" dans les Y secondes, redémarrer la connexion sur le client.
La mise en œuvre (1), vous obtiendrez la plupart du chemin.