HTML5 Websocket ne fonctionne que sur localhost
J'ai suivi le HTML5 Websocket tutoriel sur le site ci-dessous:
http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/
Il a bien fonctionné, puis j'ai changé la valeur de l'hôte de "localhost:8080" "218.175.192.160:8080" (mon ip) dans la page côté client, côté serveur toujours gardé "localhost:8080".
Il s'avère que je peux afficher la page dans le navigateur(apache) avec le protocole http, par exemple "http://218.175.192.160:8080/client.html", cependant, la prise en côté client ne peut pas se connecter "ws://218.175.192.160:8080/daemon.php".(editted faute de frappe)
mes questions sont les suivantes:
1.
à côté client, pourquoi ne websocket seulement de travailler "ws://localhost:8080/daemon.php" pas "ws://218.175.192.160:8080/daemon.php"?
2.
pourquoi socket_bind( $socket, "127.0.0.1", 8080 ) fonctionne,
mais socket_bind( $socket, "218.175.192.160", 8080 ) se produisent erreur?
le système rappelle "incapable de se lier à l'adresse [0]: L'adresse demandée n'est pas valide dans son contexte". Je suis sûr que l'adresse Ip appartient à mon serveur.
S'il vous plaît aider, je vous Remercie.
Que j'ai trouvé la raison de l'erreur: la liaison à la bonne adresse, car j'ai utilisé routeur, même si j'avais mis NAT service sur le routeur, mais j'ai oublié l'adresse de "218.175.192.160" est appartenant à l'interface de routeur, pas mon serveur.
l'adresse du serveur doit être l'adresse locale de type, par exemple: "192.168.1.2", qui est vraiment sur le lan de la carte d'interface.
désolé que j'ai oublié le réseau de base réglage 🙁 , espère que ce post aidera le réseau débutant comme moi, merci~ 🙂
thx pour ur répondre, mais mon serveur peut exécuter le protocole http normalement, je veux dire que d'autres clients peuvent lire mon site, est-il un envidence que mon routeur n'a pas de problème? au moins sur NAT...
Veuillez fermer ceci pour vous-même.
Si vous avez résolu le problème, merci de répondre à votre propre question, ou de supprimer la question.
répondre ou de marquage de Moïse réponse au lieu de l'éditer votre question serait plus utile, de l'OMI.
OriginalL'auteur ssac | 2010-08-15
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème ainsi.
Le problème est que vous êtes très probablement référence à l'adresse IP de votre ROUTEUR. Ce que vous devez faire est de se référer à l'adresse IP de votre ORDINATEUR.
Il travaille pour localhost car localhost points à votre ordinateur personnel et non celui de votre routeur.
OriginalL'auteur Moses
Je crois que de la même origine que la politique s'applique à la fois les websockets et les ports du serveur, de sorte que le client et le serveur doivent correspondre ou bien la connexion échouera.
Dans votre exemple, vous avez utilisé:
Je ne suis pas sûr si c'était juste une faute de frappe, mais ce devrait être
Ce n'est pas vrai. Il n'est pas nécessaire pour le client et le serveur pour exécuter sur le même port.
OriginalL'auteur Arne Roomann-Kurrik
Avez-vous encore utiliser "localhost" pour initialiser votre serveur PHP de cette façon?:
Si vous faites cela, alors le serveur ne se lier à l'interface localhost. Même si vous êtes servir correctement le fichier d'Apache, il semble que la phpwebsockets code doit toujours être configuré pour l'adresse IP externe.
OriginalL'auteur Arne Roomann-Kurrik
Au lieu de
socket_bind( $socket, "127.0.0.1", 8080 )
, qui raconte qu'à autoriser les demandes delocalhost
, se '0.0.0.0', ce qui permet des demandes de propriété intellectuelle.Ainsi de faire
socket_bind( $socket, "0.0.0.0", 8080 )
et il va fonctionner.OriginalL'auteur Dave Sag