= Fluent::Plugin::Websocket
Fluentd websocket output plugin.
This plugin works as websocket server which can output JSON string or {MessagePack}[http://msgpack.org/] binary.
In the current version, emitted data will be broadcasted to the all connected clients.
This fork is from {moccos/fluent-plugin-websocket}[https://github.com/moccos/fluent-plugin-websocket], but locks in Ruby 1.9 as a minimum Ruby version. The newest fluentd gem dependency "serverengine" requires Ruby 2.1.
== Installation
gem install fluent-plugin-websocket
This plugin depends on {em-websocket}[https://github.com/igrigorik/em-websocket].
== Configuration
<match foo.**>
type websocket
host 192.168.1.1 # default: 0.0.0.0 (ANY)
port 8080 # default: 8080
use_msgpack false # default: false
add_time false # default: false
add_tag true # default: true
buffered_messages 100 # default: 0
- host: WebSocket server IP address.
- port: WebSocket server port.
- use_msgpack: Send {MessagePack}[http://msgpack.org/] format binary. Otherwise, you send JSON format text.
- add_time: Add timestamp to the data.
- add_tag: Add fluentd tag to the data.
- buffered_messages: The number of messages to be buffered. The new connection receives them.
If there are no websocket connections, this plugin silently discards data. You may use out_copy plugin like this:
<match foo.**>
type copy
<store>
type file
path /var/log/foo/bar.log
</store>
<store>
type websocket
port 8080
</store>
</match>
If buffered_messages is greater than 0, the last stored data is sent to the client upon new connection.
== Data format
[tag, timestamp, data_object]
- tag is appended when add_tag option is true.
- timestamp is appended when add_time option is true.
=== Example
curl -X POST -d 'json={"action":"login","user":6}' http://localhost:8888/foo/bar
["foo.bar",1364699026,{"action":"login","user":6}]
== Client sample
=== JSON format (use_msgpack: false)
function onMessage(evt) {
data = JSON.parse(evt.data);
...
}
=== Msgpack format binary (use_msgpack: true)
Extract data by {msgpack.js}[https://github.com/msgpack/msgpack-javascript].
websocket.binaryType = "arraybuffer"
...
function onMessage(evt) {
data = msgpack.unpack(new Uint8Array(evt.data))
...
}
== Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
== Recent changes
== Copyright
Copyright:: Copyright (c) 2013 IZAWA Tetsu (@moccos)
License:: Apache License, Version 2.0