[英]Rails 5 actioncable as a standalone server
關於動作電纜沒有太多的文檔,所以我對此有點迷失。 我正在使用rails 5應用程序,我正在嘗試使用rails5應用程序作為純粹的api並在其他地方托管我的JS。 因此,當我啟動actioncable服務器時,只需使用我內置的瀏覽器套接字支持,即可輕松連接到websocket:
var socket = new WebSocket('localhost:3000/cable')
// and then do
socket.onmessage = function(data) { console.log(data) }
我成功連接。 我的形式是ping
MessageEvent {isTrusted: true, data: "{"type":"ping","message":1462992407}", ... etc
除了我似乎無法向客戶端廣播任何消息。 我試過了:
ActionCable.server.broadcast('test',{ yes: true })
但是只有ping才進來.ActionCable有自己的概念,我還沒有完全包圍我的想法,就像在rails應用程序中“正常工作”的頻道和東西一樣。 但是,如何使用actioncable的套接字服務器成功構建單獨的獨立JS應用程序?
我將ActionCable與iOS應用程序一起使用。 一切正常。
ActionCable使用pub / sub模式。
發布/訂閱或發布 - 訂閱是指消息隊列范例,其中信息發送者(發布者)將數據發送到抽象類的接收者(訂閱者),而不指定單獨的接收者。 Action Cable使用此方法在服務器和許多客戶端之間進行通信。
這意味着您應該首先創建一個新頻道,
rails g channel my_channel
然后在你的頻道發送一些測試信息:
# app/channels/my_channel.rb
class MyChannel < ApplicationCable::Channel
def subscribed
stream_from "my_channel"
ActionCable.server.broadcast "my_channel", 'Test message'
end
def unsubscribed
# Any cleanup needed when channel is unsubscribed
end
end
然后將以下內容發送到您的服務器:
{'command': 'subscribe', 'identifier': {\'channel\':\'MyChannel\'}}
作為回報,你會得到你的第一幀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.