• Как получить полный путь до значения в объекте JavaScript?

    Aliansys
    @Aliansys
    Илья Шатохин: Да бога ради ) Мне Ваш вариант нравится куда больше. Я лишь для скорости модифицировал код автора.
  • Как получить полный путь до значения в объекте JavaScript?

    Aliansys
    @Aliansys
    да, я взял код автора и предположил, что в объекте никогда не будет null, раз автор не учел этого. В любом случае, добавить проверку на null не такая проблема. Можн просто дописать в проверку null
  • Как к дате прибавить 6 месяцев?

    Aliansys
    @Aliansys
    var date = new Date(Date.parse('01.01.2015')); // Объект date, с которым можно работать как описал Сергей Мельников
  • Как передать данные при коннекте Socket IO?

    Aliansys
    @Aliansys
    Да. Самый простой вариант - это на каждое подключение добавлять координаты вновь прибывшего в массив / объект на сервере. Затем всем кроме себя (broadcast.emit) отправить координаты только вошедшего, а только вошедшему(emit) отправить массив/объект всех уже существующих. Соответственно на disconnect надо будет из массива/объекта удалять ушедшего.
  • Angular.js Директива следящая за результатами запросов к API сервера

    Aliansys
    @Aliansys Автор вопроса
    А! Теперь я понял, что Вы имеете ввиду. Тоже интересное решение. Спасибо!
  • Angular.js Директива следящая за результатами запросов к API сервера

    Aliansys
    @Aliansys Автор вопроса
    Спасибо, я подумаю над этим и почитаю про интерсепторы внимательней. Но Ваш вариант говорит о связи "Директива <-> Сервис". Я об это написал в вопросе. У меня есть несколько сервисов и мне хотелось бы, чтобы директива отражала результаты всех сервисов и, если у меня появится новый сервис, не надо было менять код директивы и ничего в нее добавлять.
  • Angular.js Директива следящая за результатами запросов к API сервера

    Aliansys
    @Aliansys Автор вопроса
    Спасибо. Вы дали мне хлеб для размышлений и место куда можно посмотреть. Такая реализация меня вполне устраивает.
  • Как отправить сообщение к конкретным пользователям?

    Aliansys
    @Aliansys
    @ruslite этот вопрос выходит за пределы темы. Но по поводу cookie с express.js много подробной информации в интернете, включая документацию самого express.js:
    expressjs.com/api.html#cookieParser
  • Как отправить сообщение к конкретным пользователям?

    Aliansys
    @Aliansys
    @ruslite не понял, что ты имеешь ввиду. Ты сделал client.broadcast.to(room_name).emit(...)?
    Тогда должен уйти ответ всем сокетам(кроме тебя самого) в комнате room_name;
    если ты просто написал client.emit(...), то ответ должен уйти всем сокетам на сервере.
  • Как отправить сообщение к конкретным пользователям?

    Aliansys
    @Aliansys
    @ruslite
    socket.on('join_room', callback);
    в твоем случае socket = client;
    а callback - это функция, которую тебе надо реализовать.
    то есть должно быть так:
    client.on('join_room', function(data){
    ...
    })

    Особо я в твой код не всматривался, но тебе надо понять следующее:
    socket.io работает пересылая между клиентом и сервером данные подписываясь на определенные тобой события.
    если у тебя на клиенте есть объект socket и он подключился к серверу, то отправлять данные на сервер ты будешь через:
    socket.emit('событие', данные)
    чтобы получать данные на клиенте ты должен быть подписан на соответствующие события, например:
    socket.on('message', function(data){...});
    socket.on('join_room', function(data){...});
    socket.on('что угодно', function(data){...});


    на сервере у тебя должны быть подписки на такие же события. И отправка этих событий, то есть, например:
    socket.on('message', function(data){...
        socket.emit('message') или socket.broadcast...
    });
    socket.on('join_room', function(data){...
        socket.emit('message') или socket.broadcast...
    });
    ...


    В общем случае у тебя должны быть подписки на методы и отправка сообщений по этим методам.
    socket.on(subscribe, fn());
    socket.emit(subscribed_event, data);

    Код и на сервере и на клиенте одинаковый.

    В твоем случае вместо слова socket, тебе надо использовать client на сервере, потому что ты так его назвал:
    io.sockets.on( 'connection', function( client ) {...})

    Видишь? Ты написал в callback функции 'client'. Значит внутри callback'а все будет через cliet.emit и client.on;

    То есть в твоем случае ты можешь создать подключение к комнате, например, так:
    client.on('join_room', function(data){
    client.join(data.room)
    client.broadcast.to(data.room).emit('new_user', data);
    })


    Из меня очень плохой объясняющий судя по всему.
  • Как отправить сообщение к конкретным пользователям?

    Aliansys
    @Aliansys
    @ruslite
    в твоем примере:
    socket.emit( 'join_room', {
    room: 'game';
     avatar: avatarVal, name: nameVal, message: msg, canal: canalVal } )

    а слушателя на 'join_room' на сервере нет. На сервере надо описать функционал на это событие, то есть:
    socket.on('join_room', callback);
  • Как отправить сообщение к конкретным пользователям?

    Aliansys
    @Aliansys
    @ruslite
    socket.emit(event, callback), event - может быть любым, только совпадающим и на клиенте и на сервере. Например у тебя есть чат. В чате есть комнаты. Для того, чтобы подписаться на кукую-то комнату у тебя на клиенте должна быть отправка по некому событию, например 'join_room' (имя не важно):
    socket.emit('join_room', {room: имя_комнаты...});
    тогда на сервере должен быть слушатель на это событие:
    socket.on('join_room', callback);
    Примеры по подключению к комнатам я уже приводил.

    Тогда если ты захочешь переслать сообщение в эту комнату, код может выглядеть так:
    клиент:
    socket.emit('send_message', {message: 'Сообщение', room: 'Имя-комнаты'});

    и обработчик получения сообщений
    socket.on('send_message', callback);

    сервер:
    socket.on('send_message', function(data){
    socket.broadcast.to(data.room).emit('send_message', {message: data.message})
    })

    Что-то вроде этого.
  • Как отправить сообщение к конкретным пользователям?

    Aliansys
    @Aliansys
    @ruslite нет, на сервере. Грязный пример:

    На клиенте что-то вроде:

    socket.emit('join_room', {room: 'game'});

    Сервер:

    socket.on('join_room', function(data){
    //Вот здесь ты можешь подключить сокет к нужной тебе комнате
    socket.join(data.room);
    socket.broadcast.to(data.room).emit('new_user', {данные})// отправит всем в этой комнате (кроме себя), что подключился новый пользователь
    })

    Что-то вроде этого
  • Как отправить сообщение к конкретным пользователям?

    Aliansys
    @Aliansys
    Ты говоришь о примерах с комнатой 'game'? Комнаты создаются тобой. Если ты не создавал комнат, то по умолчанию, все сокеты подключены к глобальной комнате '/'. Если же ты хочешь создать свою комнату, то ты можешь написать что-то вроде socket.join(имя_комнаты) и потом слать туда сообщения.
    Документация по комнатам(https://github.com/LearnBoost/socket.io/wiki/Rooms)

    Присоединение к комнатам:
    socket.join(имя)
    Отключение от комнат:
    socket.leave(имя)

    Тогда слать в комнату можно будет по примерам из моего ответа:
    // отправить всем клиентам в комнате (канале) 'game', кроме отправителя
    socket.broadcast.to('game').emit('message', 'nice game');
  • Bada - ваше мнение?

    Aliansys
    @Aliansys
    Полностью согласен. Сам являюсь обладателем Wave 8500. При активном использовании GPRS соединения живет не больше 4 часов, у меня. Глаза от него не устают. Но программ катастрофически мало. Хотя он из коробки держит самые распространенные форматы. Так что если извращений не надо, то для повседневки пойдет.