SYS:ONLINE/PUBLICATIONS
BELGIQUE 🇧🇪/CLEARANCE:PUBLIC
RSS
JF FAFCHAMPSsMug@replicatorbe
~/Publications/Développement/incompatibilite-xmlsocket-et-irc-as3

Incompatibilité XMLSocket et IRC (AS3)

Développement / /2 min de lecture

En développant mon propre client IRC en ActionScript 3 / Flex, je me suis cogné à un mur : XMLSocket termine chaque ligne par un octet nul, le protocole IRC par un CRLF. Deux conventions incompatibles, et un principe — ce n'est pas au serveur de se conformer au client.

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.