Tag: faye

如何使用Rails通过Web套接字发送二进制文件

我有一个Rails应用程序,用户上传音频文件。 我想将它们发送到第三方服务器,我需要使用Web套接字连接到外部服务器,因此,我需要我的Rails应用程序作为websocket客户端。 我正在试图找出如何正确设置它。 我还没有承诺任何gem,但’faye-websocket’gem看起来很有前途。 我甚至在“ 超时之前在websocket中发送大文件 ”中找到了类似的答案,但是,使用该代码对我来说不起作用。 以下是我的代码示例: @message = Array.new EM.run { ws = Faye::WebSocket::Client.new(“wss://example_url.com”) ws.on :open do |event| File.open(‘path/to/audio_file.wav’,’rb’) do |f| ws.send(f.gets) end end ws.on :message do |event| @message << [event.data] end ws.on :close do |event| ws = nil EM.stop end } 当我使用它时,我从收件人服务器收到错误: No JSON object could be decoded 这是有道理的,因为我不相信它为faye-websocket正确格式化。 他们的文件说: send(message)接受字符串或字节大小的数组,并通过连接向另一个对等体发送文本或二进制消息; 二进制数据必须编码为数组。 […]

在ruby中保护Websocket客户端

如何使用Ruby中的Faye-websocket建立安全(TLS)websocket客户端连接? 我在我的脚本中使用faye / websocket gem。 require ‘faye/websocket’ require ‘eventmachine’ EM.run { ws = Faye::WebSocket::Client.new(‘wss://aws.com/gateway’,:ssl => { :private_key_file => ‘path/to/ssl.key’, :cert_chain_file => ‘path/to/ssl.crt’ }, :headers => { ‘Authorization’ => ‘Basic bXl1c2VyOm15cGFzc3dvcmQ=’}) ws.on :open do |event| p [:open] ws.send(‘Hello, world!’) end ws.on :message do |event| p [:message, event.data] end ws.on :close do |event| p [:close, event.code, event.reason] […]

Faye在生产中设置

我已经在localhost上设置了Faye,并且工作正常。 我现在正尝试使用Cloud66部署服务在DigitalOcean VPS上部署它。 要运行命令,我使用“after_rails”钩子。 rackup $ RAILS_STACK_PATH / faye.ru -s thin -E production 这给了我错误: 部署期间出错:after_rails hook期间出错:服务器:not_specified。 无法运行命令:/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb require’: cannot load such file — faye (LoadError) from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in from /var/deploy/anabol/web_head/current/faye.ru:1:in block in ‘ from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:55:in instance_eval’from /usr/local/lib/ruby/gems/1.9.1/gems/rack -1.5.2 / lib / rack / builder.rb:55: initialize’ from /var/deploy/anabol/web_head/current/faye.ru:in / var / deploy / anabol / web_head / […]

与Faye和Rails的私人消息

我正在使用在railscast中播放的faye gem ,允许应用程序推送消息。 问题是它将消息推送到所有打开的聊天客户端。 我需要他们是私人的。 可以通过faye获取私人消息,但它是基于url的。 例如,所有消息都将发送到site.com/foo 。 但是,在我的模型中,聊天没有特定的url。 因为聊天只是该用户发送给您的邮件集合。 因此,如果您以adam site.com/messages/eve身份登录,那么您可以与前夕交谈,但前夕则相反。 site.com/messages/adam 。 因此,特定于URL的私人聊天似乎是不可能的。 有什么指针吗? messages_controller.rb (触发ajax) def create @message = Message.new(message_params) @message.save end create.js.erb (调用广播方法) $(“.text-wrap”).append(” “); 广播方法 (发布到王菲服务器) def broadcast(user, &block) channel = “/messages/#{user}” message = {:channel => channel, :data => capture(&block)} uri = URI.parse(“http://localhost:9292/faye”) Net::HTTP.post_form(uri, :message => message.to_json) end application.js (faye服务器订阅/ […]

如何从Rails控制器推送到Faye Server?

我有这个代码: def create message = Message.new(text: params[:message][:text], author: params[:message][:author]) if message.save render json: {result: ‘success’} else render json: {result: ‘failure’} end end 我有客户订阅了Faye Server: var subscription = client.subscribe(‘/foo’, function (message) { getMessages(); }); 我想在创建消息时向Faye发布一些消息。 如Faye Ruby Sever文档中所列,我必须这样做: require ‘eventmachine’ EM.run { client = Faye::Client.new(‘http://localhost:9292/faye’) client.subscribe(‘/foo’) do |message| puts message.inspect end client.publish(‘/foo’, ‘text’ => ‘Hello world’) […]