簡體   English   中英

Rails 5 actioncable作為獨立服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM