34
楼主,支付宝也有纯网关业务的。
加油,终于看到一个长沙的~
一至使用这个站 + 迅雷会员 看电影的,有继任者吗?
我目前想到的方法是,在 initializers 中新建一个启动类,在这个启动类中使用 Thread.start{ }这样的方式来启动这个类
两种方式吧,如果你自已有应用,因该是调支付宝的支付服务 (你可以想象成调支付宝的 APP,如何你直接是网页的话,那就是跳移动版的支付宝网页了,照样可以支付的。
最终我在 app/helpers/application_helper.rb 中重新实现了 ActionDispatch::Request 的 remote_ip 方法。该问题算上圆满解决,呵呵,非常谢谢 @cxh116
不知道在 ApplicationController 中加个 filter 然后在这个 filter 里面写上 request.remote_ip=request.headers["header name"] 这样是否可行?呵呵
@cxh116 和你设置的没有什么区别,也没有 error 日志,刚咨询了一下 abc.demo.com,告知服务器目前不支持反向代理请求......
@cxh116 去掉试过,一样也是 404,并且查看 nginx 的 access.log 没有记录。
@zfjoy520 因为一些特殊原因,在新站上采用这种方式只是最后一个方案,如果能够进行数据迁移就最好了,目前主要是想进行数据迁移。
@diudiutang 这个路径已经加过了的,是否只能识别一级目录下的.rb 文件,如果多级是否就不能加载了?
@diudiutang 我放到 lib 目录下,貌似还没有加载到?
如果不以 gem 的方式呢?是否有方法?
已解决了,貌似是 controller 的名字必须要取成复数形式,simple_form_for 好象自动生成的地址就是复数形式的
以下代码是我之前实现的,完全可以实现长连接,使用没有问题的。
def self.taobao_stream
uri=URI(Settings.stream_sandbox_url)
params={"sign_method"=>"md5","app_key"=>Settings.appkey.to_s,"timestamp"=>Time.now.strftime("%Y-%m-%d %H:%M:%S")}.sort_by{|k|
k.to_s
}
post_params={}
params.map { |key, value| post_params[key]=value }
post_params["sign"]=gen_sign(post_params,Settings.secrt_code.to_s)
c = HTTPClient.new
#piper, pipew = IO.pipe
conn = c.post_async("http://stream.api.taobao.com/stream", post_params)
#Thread.new do
res = conn.pop
msg=""
while str = res.content.read(1)
unless(str=="\n")
msg=msg+str
next
end
p msg.delete("\r")
result_json=ActiveSupport::JSON.decode(msg.delete("\r"))
#TODO处理消息的代码,这里需要改成异步的,消息量大的时候,会产生消息积压
code=result_json["packet"]["code"]
case code
when 200
puts "服务器连接成功,连接的服务器为#{result_json["packet"]["msg"]}"
when 201
puts "接收到心跳包"
when 202
puts "有业务消息推送到,消息为#{result_json["packet"]["msg"]}"
TaobaoTrade.stream_trade_msg result_json["packet"]["msg"]
when 203
puts "有消息丢失,丢失的消息#{result_json["packet"]["msg"]}"
when 101
puts "需要重新连接,已到达最长的服务器连接时间"
when 102
puts "服务器正在升级,需要#{result_json["packet"]["msg"]}秒后进行重连"
when 103
puts "服务器主动断开连接,需要#{result_json["packet"]["msg"]}秒后进行重连"
when 104
puts "发起了新连接,服务器将要断开此连接,以新连接处理消息请求"
when 105
puts "产生大量的消息积压,服务器需要断开连接"
else
puts "服务器返回了未知的应答码:code=#{result_json["packet"]["code"]},msg=#{result_json["packet"]["msg"]}"
end
msg=""
end
#end
end
➜ ~ rvm disk-usage all
Downloaded Archives Usage: 9.9M
Repositories Usage: 0B
Extracted Source Code Usage: 112M
Log Files Usage: 444K
Packages Usage: 616K
Rubies Usage: 24M
Gemsets Usage: 1.1G
Wrappers Usage: 36K
Temporary Files Usage: 0B
Other Files Usage: 2.2M
Total Disk Usage: 1.3G
哦~明白了,谢谢~
关于分支有个疑问,比如我在 master 下面创建了一个 develop 分支,然后通过 git checkout develop 到 develop 分支下去开发,但是当我通过 git checkout master 换回到 master 分支下的时候,用 git status,还是能看到我在 develop 下修改的文件?难道开分支一定要重新换到另一个目录下才行吗?
哦,谢谢~那其实 require_self 其实是把当前所在文件中的内容填充到位置,相当于一个占位符一样?
试了一下,用 HTTPClient 是可以处理的,谢谢两位
@alice 看了一下 faraday 这个 gem 的文档,貌似它没有这个功能,他主要是包装了 net/http 的一些接口? 你说的是这个吗?https://github.com/technoweenie/faraday
@lgn21st 我刚尝试了一下 net-http-persistent 这个 Gem,按着他的官方说明的代码尝试了一下,还是过一段时间后,会报 Errno::ETIMEDOUT: Operation timed out - connect(2)