前一篇文章,简单的介绍了faye push js到web端执行的情况,但是大部分的场景,faye都是push json 数据到client比较合适。比如与Android, IPhone等手机客户端通信,JSON数据能合适更多情况。
如下,是我写的一个Faye Push JSON数据到客户端的类
##
#提供faye server的服务,发送消息, 生成频道
#
module FayeServer
class Common
def self.faye_url
"http://#{FayeConfig["server"]}:#{FayeConfig["port"]}/#{FayeConfig["name"]}"
end
end
class Push
##
#负责发送json数据到服务器, ext是增加额外的参数,比如认证token
#
def self.broadcast(channel, data)
faye_url = FayeServer::Common.faye_url
#message = {:channel => channel, :data => data, :ext => {:auth_token => FAYE_TOKEN} }
message = {:channel => channel, :data => data }
uri = URI.parse(faye_url)
Net::HTTP.post_form(uri, :message => message.to_json)
end
end
end
faye的配置参数文件 faye_config.yml
defaults: &defaults
server: 192.168.1.126
port: 9292
name: diaodu
development:
<<: *defaults
production:
<<: *defaults
test:
<<: *defaults
initializers/init.rb
#faye
FayeConfig = YAML.load_file(File.join(Rails.root, "config", "faye_config.yml"))[Rails.env]
FAYE_TOKEN = "fwef0afn3pjrp32"
使用:
FayeServer::Push.broadcast(channel, data)