2015-03-11 4 views
5

У меня возникли проблемы с самой новой версией sails.js (0.11.0). В github указано, что обычный код socket.io будет принят и запущен в файле sails.js; Однако, я просто пытаюсь испускаю сообщение от клиента, когда они нажимают на что-то вроде этого:Извлечение сообщения в парусах v0.11 (на стороне клиента)

$('#myBtn').on('click', function(){ 
    io.socket.emit('message', { 
     message: { 
      subject: subject 
     }, 
     sender: id 
    }); 

}); 

Я в конечном итоге получить «неперехваченный TypeError: неопределенный не является функция» на линии io.socket.emit() аки emit не является функцией io.socket.

Вот некоторые ссылки, которые я посмотрел на:

У меня есть чувство, с обновленной версией парусами, вместо того, чтобы испускать сообщение я должен быть что делает что-то в соответствии с:

io.socket.post('/user/message', data, function(data, jwres) { 

}); 

Что касается меня следующий ответа здесь:

Он заявляет, что "номер класса" в настоящее время не рекомендуется вместе с publishCreate, publishDestroy, introduce и obituary.

Так что я следую парадигме Pub/Sub, переписываю свой более «сокет-io-ish» код, чтобы использовать паруса. Чертежи & Паб/Суб или продолжить мой сокет-io?

Есть ли другой способ исправить сообщение от клиента с помощью парусов?

ответ

2

Вы правы в том, что рекомендуемый способ связи с сервером через сокеты - использовать RESTful socket client methods. Преимущество состоит в том, что вы можете использовать обычную маршрутизацию Sails и архитектуру контроллера/действия для связи сокетов вместо поддержки всего другого уровня подписки и обработки событий на бэкэнд. Это одна из основных причин, почему @mikermcneil изначально создавал паруса. Две вещи, чтобы отметить:

  1. Вы можете использовать req.isSocket в своем действии контроллера, чтобы определить, является ли запрос, исходящий из розетки, и
  2. Вы можете получить сырье, лежащий в основе Socket.io экземпляра на клиенте с io.socket._raw , который будет иметь метод emit. Но опять же, это не рекомендуемая практика.
Смежные вопросы