From 5571dc766e2143e39762ff0b47c41d1c2e154f4c Mon Sep 17 00:00:00 2001 From: Benjamin Sanders Date: Sat, 11 Oct 2025 10:34:24 -0400 Subject: Vendor bundled gems for deployment --- .../gems/em-websocket-0.5.3/examples/multicast.rb | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/examples/multicast.rb (limited to 'vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/examples/multicast.rb') diff --git a/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/examples/multicast.rb b/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/examples/multicast.rb new file mode 100644 index 0000000..b1692d5 --- /dev/null +++ b/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/examples/multicast.rb @@ -0,0 +1,47 @@ +require 'em-websocket' +# requires the twitter-stream gem +require 'twitter/json_stream' +require 'json' + +# +# broadcast all ruby related tweets to all connected users! +# + +username = ARGV.shift +password = ARGV.shift +raise "need username and password" if !username or !password + +EventMachine.run { + @channel = EM::Channel.new + + @twitter = Twitter::JSONStream.connect( + :path => '/1/statuses/filter.json?track=ruby', + :auth => "#{username}:#{password}", + :ssl => true + ) + + @twitter.each_item do |status| + status = JSON.parse(status) + @channel.push "#{status['user']['screen_name']}: #{status['text']}" + end + + + EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080, :debug => true) do |ws| + + ws.onopen { + sid = @channel.subscribe { |msg| ws.send msg } + @channel.push "#{sid} connected!" + + ws.onmessage { |msg| + @channel.push "<#{sid}>: #{msg}" + } + + ws.onclose { + @channel.unsubscribe(sid) + } + } + + end + + puts "Server started" +} -- cgit v1.2.3