Realtime dùng react native và rails action cable
Bài đăng này đã không được cập nhật trong 6 năm
Rails 5 đã giới thiệu nhiều tính năng mới, nhưng một trong những tính năng được mong đợi nhất là ActionCable. ActionCable tích hợp WebSockets vào ứng dụng và cung cấp cả hai phía client-side JS và server-side Rails. Dưới đây mình sẽ giới thiệu cách kết nối giữa server-side sử dụng Rails và client side sử dụng react-native.
Phía Server (Rails)
- Thêm real-time route vào
config/routes.rb
mount ActionCable.server => '/cable'
- Tạo actioncable channel (vd: message channel)
rails generate channel Messages
messages_channel.rb
sẽ được generate ra trong thư mục channel
- config streaming
class MessagesChannel < ApplicationCable::Channel
def subscribed
# stream_from "some_channel"
stream_from 'message_channel'
end
def unsubscribed
# Any cleanup needed when channel is unsubscribed
end
end
Muốn sử dụng chỉ cần gọi
ActionCable.server.broadcast "message_channel", message: "Hello"
Các client đang stream từ message_channel
sẽ nhận được data gửi từ phía server
Phía client (React native)
- Install
npm install --save react-native-actioncable
- Sử dụng
import ActionCable from 'react-native-actioncable'
const cable = ActionCable.createConsumer('ws://localhost:3000/cable')
// ... Other code
cable.subscriptions.create('MessageChannel', {
connected: function() {
},
disconnected: function() {
},
received: function(data) {
}
})
All rights reserved