Note ajoutée depuis : à l'époque, je développais mon propre client IRC en ActionScript 3 / Flex (présenté ici onze jours plus tôt), pour Espace-IRC, mon réseau IRC (irc.espace-irc.org) — dont je raconte l'histoire complète dans Espace-IRC ? Kesako ?. Le problème décrit ici n'a donc rien de théorique : c'est le mur sur lequel je me suis cogné, et la classe Socket est ce qui a débloqué le projet.
Les clients doivent se conformer au serveur. XMLSocket est utilisé pour la connexion socket à faible latence. Seulement, XMLSocket termine chaque ligne par un octet nul. Mais le protocole IRC prévoit la terminaison de chaque ligne avec un \r\n. Cela devient incompatible. Il existe certains « daemons IRC » qui permettent de modifier et d'accepter cette terminaison en y ajoutant un module.
D'un point de vue éthique, on ne peut pas demander à un serveur de se conformer à un client.
C'est pour cela qu'après une recherche approfondie, nous avons trouvé la classe « Socket ».
La classe Socket a été introduite en ActionScript 3 (seulement fin 2006 !!). Cette classe permet d'établir des connexions sockets et de lire et écrire des données en binaire brut. La classe Socket est similaire à la classe « XMLSocket » mais ne dicte pas le format des données reçues et transmises.