143 votes

Utiliser PHP avec Socket.io

Est-il possible d'utiliser Sockets.io côté client et de communiquer avec une application PHP sur le serveur? Est-ce que PHP supporte même une telle façon d’écrire du code avec une telle «connexion de longue durée»?

Tout l'exemple de code que je trouve pour socket.io semble être pour node.js du côté serveur, donc pas de hlep là-bas.

105voto

Florian Margaine Points 16927

Il peut être un peu tard pour cette question, mais voici ce que j'ai trouvé.

Je ne veux pas de débat sur le fait que les nœuds ne fait que mieux que php ou pas, ce n'est pas le point.

La solution est la suivante : je n'ai pas trouvé de mise en œuvre de la prise.io pour PHP.

Mais il existe des moyens pour mettre en œuvre les WebSockets. Il y a ce plugin jQuery vous permettant d'utiliser les Websockets alors que normalement dégradant pour les non-soutenir les navigateurs. Sur le PHP côté, il y a cette classe qui semble être la plus largement utilisée pour PHP WS serveurs.

76voto

kasper Taeymans Points 2587

Si vous souhaitez utiliser socket.io avec php, cela peut être votre réponse!

site web du projet:

l'éléphant.io

ils sont aussi sur github:

https://github.com/wisembly/elephant.io

L'éléphant.io fournit une prise.io client entièrement écrit en PHP qui devrait être utilisable partout dans votre projet.

Il est léger et facile à utiliser de la bibliothèque, qui vise à apporter en temps réel des fonctionnalités à une application en PHP par socket.io et les websockets pour les actions qui ne pouvait pas être fait en full javascript.

exemple à partir du site web du projet (communiquer avec le serveur websocket par le biais de php)

serveur php

use ElephantIO\Client as Elephant;

$elephant = new Elephant('http://localhost:8000', 'socket.io', 1, false, true, true);

$elephant->init();
$elephant->send(
    ElephantIOClient::TYPE_EVENT,
    null,
    null,
    json_encode(array('name' => 'foo', 'args' => 'bar'))
);
$elephant->close();

echo 'tryin to send `bar` to the event `foo`';

socket io server

var io = require('socket.io').listen(8000);

io.sockets.on('connection', function (socket) {
  console.log('user connected!');

  socket.on('foo', function (data) {
    console.log('here we are in action event and data is: ' + data);
  });
});

20voto

Alvin K. Points 2130

MISE À JOUR: Août 2014 Le site actuel socket.io v1.0 a un exemple PHP: - https://github.com/rase-/socket.io-php-emitter

7voto

Chung Xa Points 61

Pour 'long terme de connexion que vous avez mentionné, vous pouvez utiliser la clé à Cliquet pour PHP. C'est une bibliothèque basée sur le Socket de Flux de fonctions PHP a pris en charge depuis PHP 5.

Pour le côté client, vous devez utiliser WebSocket que le HTML5 soit pris en charge au lieu de la Prise.io (puisque vous le savez, socket.io ne fonctionne qu'avec node.js).

Dans le cas où vous voulez toujours utiliser Socket.io, vous pouvez essayer de cette façon: - trouver et obtenir socket.io.js pour les clients à utiliser - travailler avec Cliquet à simuler le socket.io n'sur le serveur

Espérons que cette aide!

4voto

Chris Hanson Points 920

Si vous voulez vraiment utiliser PHP comme backend pour les WebSockets, ces liens peuvent vous aider sur votre chemin:

https://github.com/lemmingzshadow/php-websocket

http://www.htmlgoodies.com/html5/other/create-a-bi-directional-connection-to-a-php-server-using-html5-websockets.html#fbid=QqpDVi8FqD9

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X