2010-11-12 4 views
1

J'ai récemment installé un serveur WebSocket sur l'un de mes ordinateurs personnels et j'essaie de le faire fonctionner à partir d'une connexion distante. J'ai utilisé la solution PHP WebSocket suivante (prise en charge du projet 75 et 76):Obtenir WebSocket pour fonctionner à partir d'une URL distante

PHP Websocket serveur Niko Kaiser

d'une connexion locale la démo fonctionne parfaitement. Je peux très bien utiliser la démo côté client de localhost, mon DNS pointé sur ma machine à la maison, et (la partie la plus étrange) un hôte PHP distant qui héberge SEULEMENT le fichier client. La javascript pointe vers ma machine à la maison pour le WebSocket.

Le problème se produit lorsque j'utilise une autre machine, quelque chose qui n'est pas basé à la maison. Même lorsque je vais exactement à la même URL, le WebSocket ne se connecte pas. Voici ce qui se passe:

URL pointant vers la machine domestique - Fonctionne uniquement depuis la maison. Chargement de pages à partir d'autres ordinateurs, mais WebSocket ne se connecte pas. http://whoisryannystrom.com/tests/socket/client - Fonctionne à la maison seulement. Chargement de pages à partir d'autres ordinateurs, mais WebSocket ne se connecte pas.

J'ai l'adresse WebSocket dans le fichier client.html mis en place comme ceci (que je sais est correct). C'est la même chose dans le fichier html du client localhost et du client distant.

var server = new WebPush('ws://rnystrom.mine.nu:8000/echo'); 

Ensuite, je suis un peu confus quant aux adresses que les fichiers PHP du serveur doivent avoir. Voici ce que j'ai actuellement:

Le serveur principal php (server.php):

$server = new \WebSocket\Server('rnystrom.mine.nu', 8000); 

Et puis dans le serveur \ \ lib \ WebSocket (les fichiers de classe WebSocket, je pense ...) J'utilise 'localhost'. J'ai essayé 'rnystrom.mine.nu' et 'localhost', les deux fonctionnent sur la machine à la maison et aucun d'eux ne fonctionne à distance, donc cela ne semble pas faire de différence. Je crois que $ host est utilisé dans le constructeur ou quelque chose. Le fichier server.php principal définit ce qu'est $ host.

Je suis à perte. Tout ce que je veux vraiment faire est de pouvoir commencer à expérimenter avec WebSockets, mais je ne peux même pas démarrer si je ne peux pas me connecter à distance! Ce n'est pas drôle d'avoir à bureau à distance chaque fois que je veux éditer ou voir mon travail!

Répondre

0

Il semble que votre pare-feu est configuré pour autoriser les connexions externes sur le port 80, mais pas sur le port 8000.

4

Je l'ai remarqué est vieux, mais j'ai eu ce problème à un moment donné. Rendez-le lié à 0.0.0.0 car cela le fait écouter sur tous les hôtes (à défaut d'un meilleur mot).

+0

merci! m'a aidé! – marverix

Questions connexes