Frage

Grüße,

Ich versuche, Nachrichten an Benutzer basierend auf den Daten zu übertragen, die ich von einer URL bekomme. Die von der URL zurückgegebenen Daten sind JSON. Ich bin sehr neu bei node.js und socket.io und ich habe node.js und socket.io installiert. Ich bin mir einfach nicht zu 100% sicher, wie ich die Daten erhalten kann, die ich über URL an die Kunden übertragen habe. Was andere benötigt, brauche ich?

Mein Server -Dateiserver.js

var http = require('http'),  
io = require('socket.io'), 
// Do I need another require here?    

server = http.createServer(function(req, res){ 
 // your normal server code 
 res.writeHead(200, {'Content-Type': 'text/html'}); 
 //res.end('<h1>Hello world</h1>'); 
});
server.listen(8080);

// socket.io 
var socket = io.listen(server); 
socket.on('connection', function(client){ 

  //I'm not sure where/how to get data from a URL
  function getMessages() {

    var request = messageClient.request("GET", "json.php", {"host": "myurl.com"});

    // Is this how I send the data to the client?
    socket.broadcast(request);

    //request.end();
  }

  setInterval(getMessages, 1000);

  client.on('message', function(){ … }) 
  client.on('disconnect', function(){ … }) 

});

Mein Kunde

// Load jQuery too
<script src="http://pathtojquery.js"></script> 
<script src="http://{node_server_url}/socket.io/socket.io.js"></script> 
<script> 
 var socket = new io.Socket({node_server_url}); 
 socket.connect();
 socket.on('connect', function(){ … }) 
 socket.on('message', function(data){
   // Use jquery to handle the json data here and display message to the clients
   // I can handle this part as long as 'data' is json

 }) 
 socket.on('disconnect', function(){ … }) 
</script> 
War es hilfreich?

Lösung

function getMessages() {
    http.get({ host: 'myurl.com', port: 80, path: 'json.php' }, function(response) {
        var data = "";
        response.on('data', function(chunk) {
            data += chunk;
        });
        response.on('end', function() {
            socket.broadcast(JSON.parse(data));
        });
    });
}

HTTP -Moduldokumentation

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top