2016-08-08 7 views
3

У меня есть приложение rails, которое основано на API с использованием pub-nub v4. То же самое для клиентской стороны (IOS/Android) с использованием pub-nub.Публикация, получающая несколько одинаковых запросов pubnubv4 rails

Вот шаги, которые мы делаем:

1) О создании любого объекта мы подписавшие два канала и создавая listener.here.At то же время на стороне клиента мы подписавшие два канала на основе этого объекта Я бы.

2) Итак, для любого опубликования с конца IOS для одних и тех же каналов, создающих несколько запросов на веб-конце. Создание нескольких записей базы данных.

Вот пример кода подписки и отписки.

$pubnub.add_listener("broadcast_#{broadcast.id.to_s}") 

$pubnub.subscribe("broadcast_#{broadcast.id.to_s},broadcastLikes_#{broadcast.id.to_s}") 


$pubnub.publish("broadcast_#{self.id.to_s}", { type: "StopBroadcast", text: text }) 
$pubnub.remove_listener("broadcast_#{self.id.to_s}") 
$pubnub.unsubscribe("broadcast_#{self.id.to_s}, broadcastLikes_#{self.id.to_s}") 

Любой может мне помочь!

+0

Почему вы подписываетесь на своем сервере Rails? Если вам нужно отправлять сообщения от ваших клиентов на ваш сервер, почему бы не просто ПОСТ? Все, что вы делаете, подписываясь с вашего сервера, заменяет традиционное веб-приложение POST, которое на самом деле не дает никаких преимуществ. Часть, которую вы должны использовать PubNub для, - это другое направление: от сервера к клиенту. –

+0

@CraigConover Какова роль add_listener здесь? Какая связь между подпиской и add_listener? Потому что без add_listener я не могу отслеживать подписанный обратный вызов, поэтому, пожалуйста, дайте мне знать, это срочно. –

+0

Просьба представить любой пример, как мы можем работать с несколькими слушателями, чье имя генерируется динамически. –

ответ

1

Коллекция ответов от комментариев:

Если вам нужно отправлять сообщения от ваших клиентов на ваш сервер, почему бы просто не опубликовать их? Все, что вы делаете, подписываясь с вашего сервера, заменяет традиционное веб-приложение POST, которое на самом деле не дает никаких преимуществ. Часть, которую вы должны использовать PubNub для, - это другое направление: от сервера к клиенту.

Вопрос:Какова роль add_listener? Какова связь между подпиской и add_listener?

A: Слушатель предназначен для всех каналов, отвечающих на ответы и статусы. Вы создаете только один, глобальный (уровень приложения) для всех каналов. Когда вы подписываетесь на канал, сообщения, опубликованные на этом канале, поступят в слушатель. Когда вы откажетесь от подписки на канал, вы больше не будете получать сообщения, опубликованные на этом канале. Вы можете подписаться на многие каналы, чтобы вы могли контролировать каналы, на которые вы подписаны (прослушивание) по желанию. Когда вы отпишетесь от всех каналов, вы больше не получите сообщений.

Вопрос:У меня есть сомнение, что один глобальный слушатель способен обрабатывать несколько сообщений одновременно, есть ли какие-либо шансы пропустить. Должен ли мы удалить этого слушателя или нет? Если да, то когда? И в соответствии с новым рубином PubNub v4 он не показывает больше информации о слушателе, поэтому путайте.

A: Единый шаблон оформления слушателя не пропустит никаких сообщений. Нет текущей поддержки для нескольких слушателей (по крайней мере, не из коробки), но именно поэтому меня интересует требование множественного слушателя. Но просто знайте, что единственный/глобальный слушатель получит все сообщения, опубликованные во всех каналах, на которые подписано ваше приложение.

Вопрос:А как насчет удаления слушателя, нужно ли нам это делать? Если да, то когда. Если нет, тогда будет какая-то проблема? В соответствии с требованием нескольких слушателей мы можем разделить каждого слушателя с собственным прослушиванием событий, чтобы уменьшить нагрузку на одного глобального слушателя. Это в случае, если несколько обратных вызовов обращаются к одному обратному вызову одновременно.

A: Вам не нужно делать removeListener, действительно.Но если вы ничего не сделали с PubNub в приложении, вы можете назвать это просто для очистки немного памяти (очень мало). И я заверяю вас, вы можете использовать одного слушателя без каких-либо проблем. Он не будет перегружен. Слушатель является многопоточным/потокобезопасным, иначе PubNub не будет работать вообще (или желательным образом).