Salut à tous,

Voici mon soucis: j'ai récupérer un script PHP sur un forum quelconque permettant de commiquer avec mon décodeur TV SFR Evolution (bref osef).
Ce que j'aimerais, c'est reproduire l'un des comportements de ce script avec nodeJS, à savoir l'envoie d'une commande via un socket.

Voici la fonction PHP permettant l'envoie de datas:

function sendTouche($touche, $depress=true, $linefeed=true, $IP=STB_IP)  {

    if ($linefeed==true) $terminaison="\n"; else $terminaison=chr(0);

    // ouverture des deux canaux de communication. ça ne marche pas si un seul uniquement est ouvert
    $socketSend = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Err: creation socket Envoi\n");
    $socketRecv = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Err: creation socket Reception\n");
    $result = socket_connect($socketSend, $IP, Port_STB_distant) or die("Err: connexion au socket Envoi\n");
    $result = socket_connect($socketRecv, $IP, Port_STB_local) or die("Err: connexion au connect Reception\n");

    // envoi du code de la touche + press (ou relache)
    $valeur=$touche." 1".$terminaison;
    socket_write($socketSend, $valeur, strlen ($valeur)) or die("Impossible de communiquer avec le STB\n");

    // le STB renvoi la commande en echo. // WAITALL devrait permettre d'attendre l'accusé reception
    $retour="";
    socket_recv($socketSend, $retour, strlen($valeur), MSG_WAITALL) or die("Err: lecture depuis le STB"); 

    if ($depress==true) { // on simule la libération de la touche
        $valeur=$touche."  0".$terminaison;
        socket_write($socketSend, $valeur, strlen ($valeur)) or die("Impossible de communiquer avec le STB (depress)\n");
        $retour="";
        socket_recv($socketSend, $retour, strlen($valeur), MSG_WAITALL) or die("Err: lecture depuis le STB");       
    }       

    // fin de la communication
    socket_close($socketSend);
    socket_close($socketRecv);

}

Ce qui m'intéresse, c'est de savoir comment transposer les fonctions PHP socket_create(), socket_connect(), socket_write(), socket_recv() & socket_close() en nodeJS afin de faire le même boulot ? J'ai essayé avec socket.io, seulement cette lib implique d'être installée côté client, or il s'agit de la box TV sur laquelle je ne peux rien installer.

Je ne sais pas si j'ai été clair ?

Merci pour votre aide ;)

3 réponses


betaWeb
Auteur

Personne ? :(

Bonsoir,

Il semble que ce soit dispo dans nodejs pas besoin d'autre lib en plus.
https://nodejs.org/api/net.html#net_socket_connect_port_host_connectlistener

Bonne soirée.

betaWeb
Auteur

Salut @PirlotN, merci je vais y jeter un oeil et essayer ça ce soir :)