J'ai une situation où j'ai besoin de mettre à jour une fenêtre de navigateur en fonction de l'entrée de l'autre. En ce moment, j'utilise des webockets et ça marche bien.
Maintenant, je souhaite envoyer des données sur la bande Web à l'aide de PHP au lieu du navigateur (donc au lieu de WS: //, utilisez le code PHP). En d'autres termes, je veux simuler l'appel de Websocket.Send () à l'aide de PHP au lieu de JavaScript. P>
J'ai le code suivant qui ne semble pas fonctionner (l'Onmessage n'est pas appelé): < / p>
5 Réponses :
Il y a beaucoup plus à des webockets que d'envoyer simplement les données brutes à une prise TCP. P>
OK, pour démarrer, vous utilisez une prise UDP, où Webockets utilise TCP. WebSockets est un protocole entier pour la communication, similaire à http, vous devez donc suivre ce protocole, il existe une étape de la poignée de main que vous devez effectuer d'abord et les en-têtes dont vous avez besoin pour ajouter à toutes les communications. Ce n'est pas difficile, mais je ne vais pas entrer dans les détails ici. P>
Vous avez deux options d'ici, implémentez le protocole WebSockets en PHP ou utilisez une bibliothèque pré-construite comme celle-ci: http://code.google.com/p/phpwebsocket/ p>
Je ne suis pas grossier, mais je veux dire, mais à l'avenir, essayez une recherche rapide de Google. Cette bibliothèque que j'ai liée a été trouvée après Googling "PHP WebSockets". P>
Merci, j'utilise réellement phpwebsocket déjà comme serveur. Essai simplement de copier le code de là pour le faire fonctionner. Pensait que c'était plus simple que cela puisque j'envoie simplement un "paquet" de données et c'est tout.
Voici comment c'est fait:
http: // permalink. gmane.org/gmane.comp.lang.javascript.nodejs/18088 p>
Pour envoyer des données à la prise, vous devez utiliser FSOCOPOPEN pour ouvrir la connexion à la prise sur le port spécifié. Si la connexion est réussie, tout ce que vous avez à faire est d'utiliser fwrite p>
Cependant, vous allez envoyer les données au serveur WebSocket. Le serveur vous traitera en tant que client et que vous ne fournissez pas d'en-têtes HTTP, il s'attend à une authentification réussie - votre connexion sera refusée. P>
Depuis que vous n'avez pas dit qui est censé recevoir le message que vous essayez d'envoyer (tous les utilisateurs ou un utilisateur spécifique ou quelque chose de tout à fait différent), sans savoir quel est votre objectif - il est difficile d'expliquer plus de ce que vous devriez faire. P>
La partie la plus importante est que le message doit être envoyé sur la prise existant em>, ce qui signifie que vous ne pouvez pas appeler socket_connect, fsockopen ou toute autre fonction dans PHP qui tentera une connexion non sollicitée au client. . Ce n'est pas une chose de site Web - c'est un concept fondamental de la programmation du réseau. sur phpwebsocket, il serait quelque chose comme: p> $msg = "hello world";
$phpwebsocket->send($user->socket, $msg);
Checkout Ratchet Vous pouvez utiliser quelque chose comme telnet avec popen / proc_open pour communiquer avec le serveur de socket. P>
Raison de la Downvote: Stackoverflow.com/help/how-to-answer - spécifiquement "Répondre à la question" et "Fournir le contexte des liens"