2012-04-16 4 views
0

J'ai un problème lorsque j'envoie des données au client en utilisant le serveur TCP dans le nœud js. ceci est mon codequel est le caractère de r n r n dans nodejs TCP/IP

var net = require('net'); 

var server = net.createServer(function (socket) { 
    // We have a connection - a socket object is assigned to the connection automatically 
    console.log('CONNECTED: ' + socket.remoteAddress +':'+ socket.remotePort); 

    socket.on('data', function(data) {  
     var datas = JSON.parse(data); 
     console.log('DATA ' + socket.remoteAddress + ': ' + data);  
     //socket.write("kenapa ya/HTTP/1.0\r\n\r\n"); 
    }).on('connect', function() { 
     // Manually write an HTTP request. 
     var data = { 
     "name" : "test", 
     "args" : { 
      "data":[{ 
       "a":1 
      }] 
      } 
     }; 
     socket.setEncoding("utf8"); 
     socket.write(JSON.stringify(data) + "\r\n\r\n"); 

    }).on('end', function() { 
     console.log('DONE'); 
    }); 


}); 

server.listen(1337, '127.0.0.1'); 
console.log("server is listen on 1337"); 

fait que le code est un travail dans mon socket client, mais quand je suis essaie de socket.write(JSON.stringify(data)); sans réponse \r\n\r\n trop longtemps du serveur et je ne peux pas obtenir le message du serveur.

quelqu'un sait ce qui se passe? et quel effet ce code \r\n\r\n? J'utilise PHP pour créer un client socket. CRNL double est le délimiteur entre un en-tête HTTP et un corps.

+0

Cela n'a aucun sens pour moi. Il y a probablement un problème sur la manière dont vous analysez le message de l'autre côté. – mihai

Répondre

2

Voir le HTTP RFC.

+2

c'est CRLF, pas CRNL. :-) – nothrow

+0

D'accord mais c'est à la fois 0x0d 0x0a. – ceving