12/08/2018, 14:39

Tìm hiểu về Action Cable (Websocket in rails).

_ Action Cable tích hợp công nghệ WebSockets vào ứng dụng rails (Rails application). Nó cho phép ứng dựng tính năng thời gian thực (real time) với code ruby. Đây là một giải pháp đầy đủ cung cấp các lớp để giao tiếp giữa client javascript và server ruby. _ Pub/Sub (Publish-Subscribe) là đề cập ...

_ Action Cable tích hợp công nghệ WebSockets vào ứng dụng rails (Rails application). Nó cho phép ứng dựng tính năng thời gian thực (real time) với code ruby. Đây là một giải pháp đầy đủ cung cấp các lớp để giao tiếp giữa client javascript và server ruby.

_ Pub/Sub (Publish-Subscribe) là đề cập đến một hàng đợi tin nhắn, nhờ đó mà người gửi thông tin(Publish) gửi thông tin đến lớp trừ tượng (abstract class) của người nhận(Subscribe) mà không cần chỉ định rõ người nhận. Action cable sử dụng phương pháp này để giao tiếp giữa server và nhiều client.

3.1 Connections

  • Connections hình thành mối quan hệ giữa clients và server. Với mỗi WebSocket được máy chủ chấp nhận thì một connection được tạo ra, connection này trở thành cha của tất cả các channel subscription được tạo ra từ nó. Bản thân connection sẽ không thực hiện bất kỳ một xử lý logic nào khác ngoại trừ việc xác thực và ủy quyền. Client của Websocket connection được gọi là connection consumer. Mỗi người sử dụng sẽ tạo ra một cặp connection consumer cho mỗi cửa sổ trình duyệt hoặc một số thiết bị khác mà họ đã mở.
  • Connection là những instances của ApplicationCable::Connection, ở đây cho phép các kết nối đến và xử lý thiết lập connect.

3.2 Channels

3.2.1 Parent Channel Setup(cài đặt kênh chính)

_ Một channel được gói gọn trong một đơn vị logic công việc. Được cài đặt giống như các lớp controller trong mô hình MVC. Mặc định Rails App sẽ tạo một class cha ApplicationCable::Channel cho việc đóng gói chia sẻ logic giữa các channels của bạn.

  • Lớp cha (parent class)
# app/channels/application_cable/channel.rb
module ApplicationCable
  class Channel < ActionCable::Channel::Base
  end
end
  • Own channel classes. Channel sử lý logic riêng
# app/channels/chat_channel.rb
class ChatChannel < ApplicationCable::Channel
end

3.2.2 Subscriptions

_ Consumers đăng ký các kênh, hoạt động như những người nhận(subscribers). Kết nối của họ được gọi là một supscription.

0