Sha256: 42422b5634963303f52b86de89f1f496b90756754a3d7b6c55aaa7bb7ecc1ff9
Contents?: true
Size: 1.04 KB
Versions: 5
Compression:
Stored size: 1.04 KB
Contents
# encoding: utf-8 require "logstash/namespace" require "logstash/outputs/websocket_topics" require "sinatra/base" require "rack/handler/ftw" # from ftw require "ftw/websocket/rack" # from ftw class LogStash::Outputs::WebSocket::App < Sinatra::Base def initialize(channels, logger) @channels = channels @logger = logger end set :reload_templates, false get "/" do # TODO(sissel): Support filters/etc. ws = ::FTW::WebSocket::Rack.new(env) @logger.debug("New websocket client") stream(:keep_open) do |out| ws.each do |payload| json = payload.to_json if json.type == 'subscribe-topic' @channels[json.topic].subscribe do |event| ws.publish(event) end elsif json.type == 'subscribe-all' @channels.values.each do |channel| channel.subscribe do |event| ws.publish(event) end end end end # pubsub end # stream ws.rack_response end # get / end # class LogStash::Outputs::WebSocket::App
Version data entries
5 entries across 5 versions & 1 rubygems