2017-11-27 18 views
1

Ich habe node.js socket.io Server. Ich möchte alle 5 Sekunden eine Nachricht an alle Kunden senden.SocketIO globale Nachricht vom Server

Hier ist mein Prozess so weit:

var express = require('express'); 
var app = express(); 
var path = require('path'); 
var server = require('http').createServer(app); 
var io = require('../..')(server); 
var port = process.env.PORT || 3000; 

server.listen(port, function() { 
    console.log('Server listening at port %d', port); 
}); 
app.use(express.static(path.join(__dirname, 'public'))); 

function PingPong(socket) { 
console.log('Send: Ping Pong, Number of Users: %d', numUsers); 
    socket.emit('ping pong', { 
    message: numUsers 
    }); 
} 

io.on('connection', function (socket) { 
    var addedUser = false; 
    numUsers++; 

    socket.on('ping pong', function (data) { 
    console.log('Coming Data: Ping Pong'); 
    }); 

setInterval(PingPong, 3000, socket); 

... 

}); 

Ich rufe PingPong func und alle 5 Sekunden, um es 'Ping-Pong' an den Client sendet, die verbunden ist.

Gibt es eine Möglichkeit, dies auf zu tun, ich meine nicht in 'io.on (' Verbindung '..)'

ich tun möchte, es wie folgt aus:

function PingPong() { 
console.log('Send: Ping Pong, Number of Users: %d', numUsers); 
    io.emit('ping pong', { //io.emit or io.broadcast.emit instead of socket.emit 
    message: numUsers 
    }); 
} 

anstelle von socket.emit; Ich möchte etwas wie io.emit oder io.broadcast.emit für das Senden an alle Kunden zur gleichen Zeit verwenden.

Was ist deine Meinung, um es richtig zu machen?

Edit: Ich möchte senden Nachricht an Clients sogar Server hat keine Kunden. Ich meine io.on (...) ausgeführt, wenn ein Client verbunden ist. Aber ich möchte diese Funktion global ausführen und nicht nur wenn ein Client verbunden ist.

+0

haben Sie versucht mit socket.broadcast.emit ('yourMessage')? – Sparw

+0

@Sparw socket.broadcast.emit muss in io.on sein und ausgeführt werden, wenn ein Client verbunden ist. Alles was ich will, ist diese Funktion alle 5 Sekunden auszuführen, auch wenn der Server keine Verbindung zum Client hat. –

+0

Warum möchten Sie Broadcast senden, wenn kein Client verbunden ist? – Sparw

Antwort

0

fand ich einen Weg, dies zu tun:

io.on('connection', function(socket) { 
    // ... do you stuff 
}); 

setInterval(function() { 
    io.local.emit('yourMessage'); 
}, 3000); 

EDIT

Mehr Informationen über Socket.IO Documentation

Hoffe, es hilft.

+1

Danke, mein Herr! Das ist das, was ich benötige. –

+0

Gut zu wissen :) – Sparw

Verwandte Themen