Socket.io - emit из контроллера

Sanu0074
На сайте с 31.08.2012
Offline
110
518

Я начал изучать socket.io и попробовал кое-что сделать.

Вот так выглядит основной файл где инициализируется соединение с сокетом:

var log = require("core/lib/log")(module);


module.exports = function(server){

var io = require('socket.io')(server);

io.set('origins','*:*');
//io.set('origins','localhost:*');

io.sockets.on('backend-msg', (data) => {
var clients = io.sockets.clients();

clients.forEach(function(client) {
client.emit("backend-msg",data);
});

});

io.sockets.on('connection', (socket) => {

log.info("Socket is connect");

socket.on('msg', (data) => {
log.info(data);
socket.emit('msg',{text:'server say:' + new Date()});
});

socket.on('disconnect', function() {
log.info("Socket is disconnect");
});

});

return io;
};

При этом все события что внутри connect нормально работают.

В контроллере я получаю io из app:

var io = this.Req.app.get('io');

После чего пытаюсь вызвать событие 'backend-msg' которое отправит всем клиентам сообщение

io.sockets.$emit('backend-msg','Hello ' + this.Req.session.LOGIN);

И он мне говорит что: io.sockets.$emit is not a function

а если сделать io.sockets.emit (без знака $), то совсем ничего не происходит...

Можете поправить меня и объяснить где я делаю ошибку? Я подобный пример видел в сети, пытаюсь подойти к изучению работы сокетов и мне нужна какая-то точка от которой я могу оттолкнуться... премного вам благодарен)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий