2015-05-10 5 views
2

Я тестирую Socket.io в основном приложении, но io.sockets.emit, похоже, работает должным образом. Ниже приведен мой соответствующий серверный код, служба угловых сокетов и контроллер. Когда я запускаю этот код, только текущее соединение видит инструкцию console.log. Основываясь на io.sockets.emit, я бы ожидал противоположного (каждый ДРУГОЙ пользователь видит сообщение, зарегистрированное при подключении другого пользователя).Socket.io только для текущего пользователя

server.js:

var express  = require('express'); 
var app   = express(); 
var port   = process.env.PORT || 8000; 
var io    = require('socket.io').listen(app.listen(port)); 

io.on('connection', function(socket){ 
    io.sockets.emit('connect', {data: 'hey there!'}); 
}); 

console.log('Connected on port ' + port); 
exports = module.exports = app; 

socket.service.js:

angular 
    .module('app') 
    .factory('socketService', function ($rootScope) { 
    var socket = io.connect(); 
    return { 
     on: function (eventName, callback) { 
     socket.on(eventName, function() { 
      var args = arguments; 
      $rootScope.$apply(function() { 
      callback.apply(socket, args); 
      }); 
     }); 
     }, 
     emit: function (eventName, data, callback) { 
     socket.emit(eventName, data, function() { 
      var args = arguments; 
      $rootScope.$apply(function() { 
      if (callback) { 
       callback.apply(socket, args); 
      } 
      }); 
     }) 
     } 
    }; 
    }); 

main.controller.js:

angular 
    .module('app') 
    .controller('MainController', MainController); 

MainController.$inject = ['socketService']; 

function MainController(socketService) { 

    var vm = this; 

    socketService.on('connect', function(data) { 
     console.log('connection identified'); 
    }); 
} 

ответ

2

Проблема в том, что connect является сокет. io, которое срабатывает при успешном соединении

Вместо этого попробуйте использовать это на сервере

io.sockets.emit('connect message', {data: 'hey there!'}); 

и это на клиенте

socketService.on('connect message', function(data) { 
    console.log('connection identified'); 
}); 
+0

Спасибо. Оплачивает использование определенных названий событий, чтобы вы не противоречили «зарезервированным» словам. Я должен был понять, что «соединение» уже будет использовано. – MattDionis

Смежные вопросы