2017-05-05 1 views
-1

In der offiziellen Website von socket.io habe ich ein Codebeispiel, mein Zweifel ist, wird die emit-Funktion das Ereignis für alle Client oder nur für den Client emittieren, der im Server angeschlossen? Der Beispielcode:Wie funktioniert die Emit-Funktion von Socket io?

Server (app.js):

var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 

server.listen(80); 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

io.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 

Client (index.html):

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 
</script> 
+1

Es ist pro Verbindung erfolgt. Jede Verbindung zum Server erstellt im Wesentlichen ein Socket-Objekt, das an den Callback übergeben wird. – raina77ow

+0

Sie können diese Antwort für alle verschiedenen Antworten beziehen, [Check out] (http://stackoverflow.com/questions/10058226/send-response-to-all-clients-except-sender-socket-io#answer-10099325) –

Antwort

3

die emit Funktion das Ereignis für alle Client emittieren oder nur für den Kunden, der im Server verbunden ist?

In Ihrem Codebeispiel auf dem Server:

socket.emit(...) wird eine Nachricht nur an dieser bestimmten Verbindung senden.

io.emit(...) sendet eine Nachricht an alle derzeit verbundenen Clients.

Beachten Sie, dass io.emit() keine magische Kräfte haben, es Schleifen nur durch alle aktuellen angeschlossenen Clients und ruft socket.emit() für jedes individuell ihre besonderen socket-Objekt - Speichern Sie die Arbeit von diesen Code schreiben selbst .

Vom Client sendet eine Nachricht an den Server.

+0

Vielen Dank Mann, es ist mir jetzt klarer! –