Actuellement en train d'étudier l'extension Socket de PHP, et plus largement les possibilités d'utilisation de PHP en ligne de commande (voire dans une GUI avec PHP-GTK) j'avais jusqu'à aujourd'hui la ferme intention de développer mon propre serveur de socket multi-utilisateur pour, entre autre, une utilisation conjointe à Flash. :)

Je dis bien jusqu'à ajourd'hui, car je suis tombé sur un serveur PHP nommé patServer. Il m'a suffit de regarder le code pour voir que c'est exactement ce que je voulais, et que coder le mien reviendrait à faire strictement la même chose. Donc, au lieu de réinventer la roue, je vais me contenter de dériver la seule et unique classe de ce serveur.

Simple mais trés bien pensé, il fournit un système de callback trés analogue aux évenements de Flash. Les évenements sont le strict nécessaire : démarrage, arret, nouvelle connexion, connexion refusée, nouvelle donnée, deconnexion. Avec un système de limitation du nombre de clients simultanés, et de configuration du caractère de fin d'un message (pratique pour le caractère 0 de Flash 8)).

Voici le code simplissime que j'ai utilisé pour créer un chat via telnet :/**
* MyServer.php
* classe serveur
*/

require_once "patServer.php";
class MyServer extends patServer {
        function onConnect ($i) {
                $this->broadcastData("Nouveau client", array($i));
        }
        function onReceiveData ($i, $data) {
                $this->broadcastData($data);
        }
}
/**
* launch.php
* Lancement du serveur
* Utilisation : taper 'php launch.php' en ligne de commande
*/

require_once "class/MyServer.php";
$srv = new MyServer();
$srv->start();

Et voila, je peux me connecter sur deux telnet différents et discuter avec moi-même !!! :P