2011-11-21 4 views
1

J'ai trouvé un excellent didacticiel websocket. Si le serveur reçoit un message, le serveur le décode et écrit sur la console, après quoi le serveur le renvoie au client.node.js websocket envoyer des données personnalisées

var firstByte = data[0], 
     secondByte = data[1]; 

    if(!(firstByte & 0x81)) socket.end(); 
    if(!(secondByte & 0x80)) socket.end(); 

    var length = secondByte & 0x7f; 

    if(length < 126){ 
    var mask = data.slice(2,6); 
    var text = data.slice(6); 
    } 

    if(length == 126){ 
    var mask = data.slice(4,8); 
    var text = data.slice(8); 
    } 

    var unMaskedText = new Buffer(text.length); 
    for(var i=0;i<text.length;i++){ 
     unMaskedText[i] = text[i]^mask[i%4]; 
    } 

    console.log(unMaskedText.toString()); 

    if(unMaskedText.length > 125) 
    var newFrame = new Buffer(4); 
    else 
    var newFrame = new Buffer(2); 

    newFrame[0] = 0x81; 

    if(unMaskedText.length > 125){ 

    newFrame[1] = 126; 

    var length = unMaskedText.length; 

    newFrame[2] = length >> 8; 
    newFrame[3] = length & 0xFF; //1111 1111 


    } else { 

    newFrame[1] = unMaskedText.length; 

    socket.write(newFrame, 'binary'); 
    socket.write(unMaskedText, 'utf8'); 
    } 

Cela fonctionne, mais je voudrais envoyer des messages personnalisés, pas seulement ce que le client m'a envoyé.

+0

Peut-être vous trouvé cette réponse wiki intéressante: http://stackoverflow.com/questions/8125507/how-can-i-send-and-receive-websocket-messages. – pimvdb

+0

mais quel shound je modifie dans mon code? – Uw001

+0

En y regardant, pourquoi ne pas envoyer autre chose que 'unMaskedText' à la place? Par exemple. juste écraser 'unMaskedText' avant d'effectuer les calculs d'envoi. – pimvdb

Répondre

1

Je l'afficherai comme une réponse juste pour plus de clarté.

Vous devez remplacer unMaskedText par un tampon représentant le texte que vous souhaitez envoyer, après avoir affiché les données reçues mais avant d'effectuer les calculs pour les données à envoyer. Par exemple.

unMaskedText = new Buffer("test"); 
Questions connexes