2010-11-04 23 views
14

Ich habe ein Projekt und ich bin mit socket.io mit ausdrücklicher,socket.io mit ausdrücklicher

so, was ich brauche (ich versucht) eine Nachricht sendet, sondern aus einer ausdrücklichen Handlung. ist das möglich, ich weiß nicht, wie man einen Verweis erhält, um zu senden oder zu senden.

app.get('/', function(req, res) { 
//i need to send messages from here 
}); 

Andere Dinge, wie beide mit Express + socket.io mit mir zu arbeiten :)

Antwort

0

überprüfen mein Beispiel Repo, wo ich Express.js verwenden + Juggernaut (PubSub über socket.io):

http://github.com/shripadk/express-juggernaut-demo

Dies könnte Overkill für das sein, was Sie benötigen, da es Publish/Subscribe verwendet. Aber es löst bis zu einem gewissen Grad Ihr Problem mit regulären ExpressJS-Routen. Kasse der Master-Zweig nach dem Repository-Klonen:

git checkout master

+0

Wenn ich "Git Klon git: //github.com/shripadk/express-juggernaut.git" ausführen, bekomme ich diesen Fehler: "fatal: Das Remote-Ende aufgelegt unerwartet" – ibmkhd

+0

Meinst du, diesen Befehl "Git Klon git: //github.com/shripadk/express-juggernaut-demo.git ", das ist Arbeit für mich, aber wenn ich" git checkout master "mache, bekomme ich" Already on 'master' ", ich ignorierte dies und führte die demo put ich bekomme das – ibmkhd

+0

Das 'sys' Modul heißt jetzt 'util'. Es sollte eine ähnliche Schnittstelle haben. node.js: 50 werfen e; // process.nextTick-Fehler oder "Fehler" -Ereignis beim ersten Tick ^ Fehler: Modul 'utils' konnte nicht gefunden werden bei resolveModuleFilename (node.js: 265: 13) bei loadModule (node.js: 231: 20) bei erfordern (node.js: 291: 14) bei Object. (/home/ibrahim/ws/Lebanon/staTest/express-juggernaut-demo/lib/support/juggernaut/lib/juggernaut/channel.js:2:13) bei Module._compile (node.js: 348: 23) bei Object..js (node.js: 356: 12) bei Module.load (node.js: 279: 25) – ibmkhd

0

ich ein schönes Beispiel gefunden, wie man zu machen, was ich brauche, aber mit Fayes es hier http://nodecasts.org/.

Ich weiß nicht, den Unterschied zwischen Juggernaut, Faye und direkter Socket.io aber Faye ist gut

für meinen Fall .Und ich denke, beide Socket.io intern verwenden.

+1

Faye benutzt intern nicht socket.io. Es basiert auf dem Bayeux-Protokoll. Aber es ist gut :) –

3

Solange ich verstehe,

Warum nicht den Socket-Nachrichtentyp als ein Ereignis anstelle einem HTTP-GET oder Post? Auf der Client-Seite würden Sie eine Nachricht über den Websocket senden, sagen wir eine Event-Eigenschaft.

So in Ihrem Fall:

 
<script> 
    // Initialize socket.io ... 

    // and then 
    socket.send({event: 'homepage loaded', foo: 'bar'}); 
</script> 

Und auf der Serverseite:

 
var io = io.listen(server); 

io.on('connection', function (client) { 
    client.on('message', function (message) { 
    if (message.event == 'homepage loaded') { 
     client.broadcast(...); 
    } 
    }); 
}); 
4

Sie vielleicht einen Blick auf meine socket.io + Express primer haben wollen. Was Sie wollen, ist dort ausführlich behandelt.

// Send to all connected sockets 
io.sockets.send('Hello, World!'); 

// Send to all sockets in a specified room 
io.sockets.in('room').send('Hello, Room!'); 

Wo io ist der Wert, der durch den Aufruf von socketio.listen() zurückgegeben. Sie können diesen Code überall in Ihrer Anwendung platzieren, z. B. in Ihren app.get Rückrufen.