Realtime dùng react native và rails action cable
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 ...
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) { } })