ryanb/private_pub là một trong những repo mã nguồn mở mà TopGit theo dõi, hiện có 860 sao, viết chủ yếu bằng Ruby. Handle pub/sub messaging through private channels in Rails using Faye.
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
The Private Pub gem is no longer maintained. Feel free to fork this project.
Private Pub
Private Pub is a Ruby gem for use with Rails to publish and subscribe to messages through Faye. It allows you to easily provide real-time updates through an open socket without tying up a Rails process. All channels are private so users can only listen to events you subscribe them to.
Watch RailsCasts Episode 316 for a demonstration of Private Pub.
Setup
Add the gem to your Gemfile and run the bundle command to install it. You'll probably want to add "thin" to your Gemfile as well to serve Faye.
gem "private_pub"
gem "thin"
Run the generator to create the initial files.
rails g private_pub:install
Next, start up Faye using the rackup file that was generated.
rackup private_pub.ru -s thin -E production
In Rails 3.1 add the JavaScript file to your application.js file manifest.
//= require private_pub
In Rails 3.0 add the generated private_pub.js file to your layout.
<%= javascript_include_tag "private_pub" %>
It's not necessary to include faye.js since that will be handled automatically for you.
Usage
Use the subscribe_to helper method on any page to subscribe to a channel.
<%= subscribe_to "/messages/new" %>
Use the publish_to helper method to send JavaScript to that channel. This is usually done in a JavaScript AJAX template (such as a create.js.erb file).
<% publish_to "/messages/new" do %>
$("#chat").append("<%= j render(@messages) %>");
<% end %>
This JavaScript will be immediately evaluated on all clients who have subscribed to that channel. In this example they will see the new chat message appear in real-time without reloading the browser.
Alternative Usage
If you prefer to work through JSON instead of .js.erb templates, you can pass a hash to publish_to instead of a block and it will be converted to_json behind the scenes. This can be done anywhere (such as the controller).
The Ruby subscribe_to helper call is still necessary with this approach to grant the user access to the channel. The JavaScript is just a callback for any custom behavior.
Configuration
The configuration is set separately for each environment in the generated config/private_pub.yml file. Here are the options.
server: The URL to use for the Faye server such as http://localhost:9292/faye.
secret_token: A secret hash to secure the server. Can be any string.
signature_expiration: The length of time in seconds before a subscription signature expires. If this is not set there is no expiration. Note: if Faye is on a separate server from the Rails app, the system clocks must be in sync for the expiration to work properly.
How It Works
The subscribe_to helper will output the following script which subscribes the user to a specific channel and server.
The signature and timestamp checked on the Faye server to ensure users are only able to access channels you subscribe them to. The signature will automatically expire after the time specified in the configuration.
The publish_to method will send a post request to the Faye server (using Net::HTTP) instructing it to send the given data back to the browser.
Serving Faye over HTTPS (with Thin)
To server Faye over HTTPS you could create a thin configuration file config/private_pub_thin.yml similar to the following:
The certificate_chain.pem file should contain your signed certificate, followed by intermediate certificates (if any) and the root certificate of the CA that signed the key.
Next reconfigure the URL in config/private_pub.yml to look like https://your.hostname.com:4443/faye
Finally start up Thin from the project root.
thin -C config/private_pub_thin.yml start
Project Status
Unfortunately I have not had time to actively work on this project recently. If you find a critical issue where it does not work as documented please ping me on Twitter and I'll take a look.
Development & Feedback
Questions or comments? Please use the issue tracker. Tests can be run with bundle and rake commands.
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/ryanb/private_pub là nguồn chính thức.
ryanb/private_pub có bao nhiêu sao?
ryanb/private_pub có 860 sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/ryanb/private_pub. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
ryanb/private_pub có phải mã nguồn mở không?
Có — ryanb/private_pub phát hành theo license MIT, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/ryanb/private_pub.
ryanb/private_pub còn đang phát triển không?
Commit gần nhất trên ryanb/private_pub là 4.7 năm trước (theo timestamp GitHub). Repo có 222 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
ryanb/private_pub là gì?
ryanb/private_pub (ryanb/private_pub) là dự án Ruby trên GitHub. Theo mô tả gốc: Handle pub/sub messaging through private channels in Rails using Faye.
Đọc đầy đủ README ở tab phía trên.
Vẫn đang phân vân về private_pub?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về private_pub.