Ruby on rails 如何在没有JS的情况下在ActionCable频道中接收数据?
我正在编写一个Rails应用程序,它使用WebSocket与其他机器通信(在此过程中没有浏览器和客户端逻辑)。我有一个频道:Ruby on rails 如何在没有JS的情况下在ActionCable频道中接收数据?,ruby-on-rails,actioncable,Ruby On Rails,Actioncable,我正在编写一个Rails应用程序,它使用WebSocket与其他机器通信(在此过程中没有浏览器和客户端逻辑)。我有一个频道: class MachinesChannel < ApplicationCable::Channel def subscribed ... end def unsubscribed ... end def handle_messages ... end end 我可以通过@perform()方法从JS调用服务器端方
class MachinesChannel < ApplicationCable::Channel
def subscribed
...
end
def unsubscribed
...
end
def handle_messages
...
end
end
我可以通过@perform()
方法从JS调用服务器端方法
有没有办法省略JS部分,直接在MachinesChannel
中处理传入的数据
理想的情况是让
handle_messages
方法接受数据
参数,并对传入数据调用此方法。查看ActionCable
源代码后,我得到了以下解决方案。您只需在MachinesChannel
中创建一个要调用的方法,例如handle\u messages(data)
。然后,在连接到websocket的客户端中,您需要以以下格式发送消息(ruby中的示例):
action
必须是要在MachinesChannel
中调用的方法的名称。其余的键值是您想要的。这是您可以在ActionCable
频道中收到的日期
最近发布了一个gem,它似乎非常适合这种用法。我没有使用过它,所以我不知道它到底是如何工作的。而不是:
def handle_messages
...
end
这对我很有用:
def receive(data)
puts data
...
end
嘿客户是我的宝贝。如果有人对使用有任何疑问,我很乐意提供帮助!:-)
def handle_messages
...
end
def receive(data)
puts data
...
end