Я тестирую 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');
});
}
Спасибо. Оплачивает использование определенных названий событий, чтобы вы не противоречили «зарезервированным» словам. Я должен был понять, что «соединение» уже будет использовано. – MattDionis