Rails和Websockets:在功能上需要一些方向

时间:2013-10-03 22:11:15

标签: ruby-on-rails websocket pusher

在我的rails应用中,User有个人资料,此个人资料可以公开访问。我一直在寻找使用Pusher gem(https://github.com/pusher/pusher-gem)来使用我的应用程序即插即用websocket。

基本上我想要它,以便如果用户正在查看公共配置文件并且该配置文件的所有者碰巧更新该配置文件,则使用新信息更新前端,并在前面通知用户 - 结束更新。

任何关于从何处入手的帮助都会很棒!

1 个答案:

答案 0 :(得分: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
} );

这里的一个问题是,即使没有人查看公开个人资料,您也会触发一个事件。如果您想要修复此问题,则需要使用WebHooks并跟踪个人资料频道是否为occupied,并且仅触发该事件。