Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.12.2015, 13:09
Аватар для Sanu0074
Аспирант
Отправить личное сообщение для Sanu0074 Посмотреть профиль Найти все сообщения от Sanu0074
 
Регистрация: 16.12.2012
Сообщений: 80

Socket.io - emit из контроллера
Я начал изучать 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 (без знака $), то совсем ничего не происходит...

Можете поправить меня и объяснить где я делаю ошибку? Я подобный пример видел в сети, пытаюсь подойти к изучению работы сокетов и мне нужна какая-то точка от которой я могу оттолкнуться... премного вам благодарен)
Ответить с цитированием
  #2 (permalink)  
Старый 03.01.2017, 15:19
Новичок на форуме
Отправить личное сообщение для vic5710 Посмотреть профиль Найти все сообщения от vic5710
 
Регистрация: 09.12.2016
Сообщений: 4

рабочий пример
var clients = 0;
io.on('connection', (socket) => {
	 clients++;
	 console.log('connect: '+ clients);
	 socket.emit('news',{value: 'connect: '+ clients}); //to client
	 io.sockets.emit('news',{value: 'Hi all !'});// to all
     socket.on('disconnect', () => {
	 clients--;
	 console.log('disconnect: '+ clients);
    });
	socket.on('error', (err) => {
	    console.log(err);
	});
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестирование Socket.io freeneutron Node.JS 0 24.11.2015 16:33
Не могу установить socket.io HELP ME PLEASE Altakil Node.JS 5 05.11.2015 09:12
Socket.IO, общий транспорт для нескольких вкладок Котзилла AJAX и COMET 2 20.04.2015 02:26
Socket.io server-side. Послать сообщение(команду) определенному сокету. eldarkaa AJAX и COMET 0 30.08.2014 20:56
Онлайн игра на Node.js + SockJS или socket.io freerunner AJAX и COMET 4 19.04.2014 18:46