Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Tree: f11751c3dd
Fetching contributors…

Cannot retrieve contributors at this time

96 lines (64 sloc) 2.359 kB

Streaming

The Streaming API allows you to monitor a room in real time. The authenticated user must already have joined the room in order to use this API.

Connections

Our servers will try to hold the streaming connections open indefinitely. However, API clients must be able to handle occasional timeouts or disruptions. Upon unexpected disconnection, API clients should wait for a few seconds before trying to reconnect.

Authentication

Authentication is done with a token, which you'll find on the "My Info" screen in Campfire. The streaming API doesn't support OAuth.

Formats

The data stream is available in JSON or XML format. JSON is recommended.

API

  • GET https://streaming.campfirenow.com/room/#{id}/live.json stream a single room’s messages.

The target host is always streaming.campfirenow.com.

Response:

{"room_id":1,"created_at":"2009-12-01 23:44:40","body":"hello","id":1,
 "user_id":1,"type":"TextMessage","starred":"true"}
{"room_id":1,"created_at":"2009-12-01 23:40:00","body":null,"id":2,
 "user_id":null,"type":"TimestampMessage","starred":"false"}
...

Examples

Need to get started quickly with the Campfire Streaming API? Try one of our example scripts that use the twitter-stream library or YAJL Ruby C bindings:

twitter-stream

# gem install twitter-stream
require 'twitter/json_stream'

token = 'xxx' # your API token
room_id = 111 # the ID of the room you want to stream

options = {
  :path => "/room/#{room_id}/live.json",
  :host => 'streaming.campfirenow.com',
  :auth => "#{token}:x"
}

EventMachine::run do
  stream = Twitter::JSONStream.connect(options)

  stream.each_item do |item|
    puts item
  end

  stream.on_error do |message|
    puts "ERROR:#{message.inspect}"
  end

  stream.on_max_reconnects do |timeout, retries|
    puts "Tried #{retries} times to connect."
    exit
  end
end

YAJL

# gem install yajl-ruby

require "uri"
require "yajl/http_stream"

token = 'xxx' # your API token
room_id = 111 # the ID of the room you want to stream

url = URI.parse("http://#{token}:x@streaming.campfirenow.com/room/#{room_id}/live.json")
Yajl::HttpStream.get(url) do |message|
  puts message.inspect
end
Jump to Line
Something went wrong with that request. Please try again.