下面是模拟redis的订阅和发布
1.pub.rb
require 'redis'
redis = Redis.new
5.times do
redis.publish('redis_sub',"hola!!!!!!!")#想redis_sub频道发布消息
end
2.sub.rb
require 'redis'
require 'json'
redis = Redis.new
redis.subscribe('redis_sub') do |on| #订阅一个redis_sub频道的信息
on.message do |channel,msg|
puts msg #获取发布的信息
puts channel #输入频道
puts "=============="
end
end
运行代码: ruby sub.rb /ruby pub.rb
1.pub.rb 可以不断输入message进行发布
require 'redis'
require 'json'
redis = Redis.new
data = {"user"=>ARGV[1]}
loop do
msg = STDIN.gets
redis.publish ARGV[0],data.merge('msg'=>msg.strip).to_json
end
2.sub.rb
require 'redis'
require 'json'
redis = Redis.new
redis.subscribe('rubyonrails','ruby-lang') do |on| #rubyonrails,ruby-lang 两个频道
on.message do |channel,msg|
data = JSON.parse(msg)
puts "#{channel} - [#{data['user']}]: #{data['msg']}"
end
end
运行代码:ruby pub.rb rubyonrails qrush / ruby sub.rb
发送端:
接受端: