2011-09-09 2 views
0

Ok, j'ai lu un million de tutoriels et dans la section des commentaires il y a toujours quelqu'un qui demande la même chose que ce que je vis actuellement et aucune vraie réponse n'est donnée, et juste pour clarifier, oui , im en utilisant la dernière version de chrome sur laquelle Websockets fonctionne.HTML 5 Web Sockets

Je continue d'obtenir l'erreur "Déconnecté" dès le chargement de la page.

d'abord im runnig PHP 5 sur IIS (pas mon choix)

J'ai téléchargé http://bohuco.net/dev/websocket/?source=WebSocketServer.php

et en essayant de tester http://www.flynsarmy.com/2010/05/php-web-socket-chat-application/.

L'emplacement des fichiers que j'ai téléchargés sont en www.something.co.uk/html5/test

qui inclut les fichiers de démonstration ci-dessus et aussi le websocket php.

La chose que je suis confus au sujet de comment // Se connecter au serveur

var server = new ServerEventsDispatcher("<someip>:12345"); 

se connecte avec le server.php situé dans le chemin de fichier ci-dessus. Puis-je ajouter le domaine et l'URL dans la partie someip?

Toute aide à ce sujet est très appréciée.

EDIT

après une lecture plus il semble que je peux.

http://dev.w3.org/html5/websockets/

var socket = new WebSocket('ws://game.example.com:12010/updates'); 
socket.onopen = function() { 
    setInterval(function() { 
    if (socket.bufferedAmount == 0) 
     socket.send(getUpdateData()); 
    }, 50); 
}; 

Ma question suivante (car cela ne résout toujours pas la situation)

dans le fichier server.php, est localhost valide ou il ne doit être ip/domaine?

$server = new WebsocketServer('localhost', 12345, 'process'); 

EDIT

J'ai changé connexion socket Web pour

//Connect to the server 
var server = new ServerEventsDispatcher("domain.co.uk:81/path/to/server.php"); 

et a changé le port scripts.php à 81 et toujours rien ...

Répondre

2

Le WebSocketServer classe que vous avez lié lance ledit serveur sur le port donné lors de la création de l'objet. Notez que ce port ne peut pas être identique à votre serveur Web pour des raisons évidentes. Le côté javascript doit ouvrir un WebSocket sur ce serveur, en supposant que ServerEventsDispatcher ouvre en interne un nouveau WebSocket sur le serveur ws: //: 12345/vous devez ajouter le nom d'hôte ou l'adresse IP du serveur exécutant WebSocketServer avec le bon numéro de port là. Par exemple, WebSocketServer s'exécute sur someserver.domain.com sur le port 81 (puisque 80 est le plus probable utilisé par IIS):

var server = new ServerEventsDispatchet("someserver.domain.com:81"); 

En regardant le code de cette classe javascript ouvre en fait un WebSocket en utilisant l'adresse directement; donc vous pouvez également utiliser ws://someserver.domain.com:81 si vous souhaitez spécifier le protocole (ou wss pour SSL).

Editer le suivi de votre modification: J'utiliserais l'adresse publique de votre serveur dans cette classe WebSocketServer; car il va essayer de se lier à ce sujet:

socket_bind($this->master, $this->address, $this->port) or die("socket_bind() failed"); 

voir aussi: http://nl3.php.net/manual/en/function.socket-bind.php

En plus de votre dernière édition:

vous ne devez pas ajouter le chemin de votre script php. Lorsque vous ouvrez votre script PHP, il devrait essayer d'ouvrir ce serveur WebSocket; mais le serveur websocket va juste courir à "ws://<servername>:<port>". Donc, dans le javascript, vous pouvez l'utiliser comme adresse, puis naviguez vers le script PHP dans votre navigateur pour le programme de test.

- Modifier l'utilisation du serveur -

Depuis cela deviendrait trop long/illisible dans un commentaire; selon le site, vous devez utiliser une ligne de commande php pour lancer la classe serveur:

"Ouvrez une fenêtre de terminal (Ligne de commande sur Windows) et accédez au répertoire de votre projet Exécutez le script avec PHP et si tout est parti plan, vous devriez obtenir le message suivant: "

$ php -f server.php 
Server Started : 2010-05-26 22:40:03 
Listening on : localhost port 12345 
Master socket : Resource id #5 

Lorsque c'est fait; le serveur devrait être en place et à l'écoute. Vous pouvez alors vous connecter à ce serveur en utilisant le WebSocket en javascript avec l'url websocket comme indiqué ci-dessus :)

+0

Toujours pas de joie avec cela ... –

+1

Vous pouvez essayer de vérifier si le serveur websockets fonctionne réellement sur le serveur en vérifiant Sortie netstat. Lorsque vous naviguez vers le script php qui lance WebSocketServer, il doit être affiché ici pour écouter sur le port donné (: 81). En outre, votre serveur doit autoriser le trafic entrant sur le port 81. – Yhn

+0

! la navigation à vous l'URL à server.php sur le port 81 ne fonctionne pas mais fait sur le port 80! laissez-moi enquêter plus! –