Rails и Websockets: нужно какое-то направление для функции

В моем приложении rails у User есть профиль, и этот профиль может быть общедоступным. Я рассматривал возможность использования драгоценного камня Pusher (https://github.com/pusher/pusher-gem) использовать для использования веб-сокета plug-and-play с моим приложением.

В основном я хочу, чтобы, если пользователь просматривает общедоступный профиль, и владелец этого профиля обновляет этот профиль, тогда интерфейс обновляется новой информацией, и пользователь уведомляется на интерфейсе о Обновить.

Любая помощь в том, с чего начать, будет здорово!


person dennismonsewicz    schedule 03.10.2013    source источник


Ответы (1)


Для каждого общедоступного профиля есть уникальное имя канала, например. <user_name>-profile.

Всякий раз, когда в профиле пользователя user_name происходит обновление, инициируйте событие на канале пользователя, передавая обновленные данные.

data = update_profile()
Pusher.trigger( '<user_name>-profile', 'profile-updated', {:profile => data} )

На странице профиля в браузере есть код, который прослушивает обновления только на соответствующем канале:

var pusher = new Pusher( APP_KEY );
var channel = pusher.subscribe( '<user_name>-profile' );
channel.bind( 'profile-updated', function( update ) {
  // Update UI to show new profile information
  // Show something to indicate that an update has occurred
} );

Единственная проблема заключается в том, что вы будете инициировать событие, даже если никто не просматривает общедоступный профиль. Если вы хотите исправить это, вам нужно будет использовать веб-перехватчики и отслеживать, был ли канал профиля occupied и инициировать событие только в том случае, если оно есть.

person leggetter    schedule 05.10.2013
comment
Большое спасибо за советы!! Я собираюсь изучить это дальше! - person dennismonsewicz; 06.10.2013