这是交易。我还想用 ruby on rails 框架开发一个 websocket 服务器客户端。然而 ruby-on-rails 对 eventmachine 不是很友好。我一直在为拥有一个 websocket 客户端而苦苦挣扎,所以我设法从现有的 lib 中复制/剪切/粘贴,并最终得到以下两个基本的。
Em-Websocket 服务器
https://gist.github.com/ffaf2a8046b795d94ba0
ROR 友好的 websocket 客户端
https://gist.github.com/2416740
在脚本目录中有服务器代码,在 ruby 代码中开始如下所示。
# Spawn a new process and run the rake command
pid = Process.spawn("ruby", "web_socket_server.rb",
"--loglevel=debug", "--logfile=#{Rails.root}/log/websocket.log",
:chdir=>"#{Rails.root}/script") #,
:out => 'dev/null', :err => 'dev/null'
Process.detach pid # Detach the spawned process
然后你的客户端可以这样使用
ws = WebSocketClient.new("ws://127.0.0.1:8099/import")
Thread.new() do
while data = ws.receive()
if data =~ /cancel/
ws.send("Cancelling..")
exit
end
end
end
ws.close
我希望有一个好的 ROR 友好的 em-websocket 客户端,但还不能很好。
一旦你使服务器/客户端运行良好,auth. 并且数据库支持不能与其他 Rails 代码有很大不同。(我的意思是客户端有一些 auth/db 限制)