This module uses XBMC JSON-RPC Api V6 to provice a rich and simple API to communicate with XMBC instances.
The xbmc module contains the following classes:
XbmcApi: API wrapper of available actions, notifications and media handlingTCPConnection: TCP Client to communicate with XBMC
All classes are created asynchronously.
All classes are sharing an EventEmitter instance.
XbmcApi.on and XbmcApi.emit are wrappers to the shared PubSub. For instance:
In CoffeeScript :
{TCPConnection, XbmcApi} = require 'xbmc'
connection = new TCPConnection
host: '127.0.0.1'
port: 9090
verbose: true
xbmc = new XbmcApi
xbmc.setConnection connection
xbmc.on 'connection:open', -> console.log 'Connection is open'
xbmc.on 'connection:data', (data) -> console.log 'Received data:', data
xbmc.on 'connection:notification', (notification) -> console.log 'Received notification:', notificationIn JavaScript :
var Xbmc = require('xbmc');
var connection = new Xbmc.TCPConnection({
host: '127.0.0.1',
port: 9000,
verbose: false
});
var xbmcApi = new Xbmc.XbmcApi;
xbmcApi.setConnection(connection);
xbmcApi.on('connection:data', function() { console.log('onData'); });
xbmcApi.on('connection:open', function() { console.log('onOpen'); });
xbmcApi.on('connection:close', function() { console.log('onClose'); });TCPConnection uses a deferred (promise) mechanism. Following two examples are both working:
{TCPConnection, XbmcApi} = require 'xbmc'
connection = new TCPConnection
host: '127.0.0.1'
port: 9090
verbose: true
xbmc = new XbmcApi
xbmc.setConnection connection
# run actions after received a 'connection:open' event
xbmc.on 'connection:open', ->
xbmc.message 'Hello World'connection = new TCPConnection
host: '127.0.0.1'
port: 9090
verbose: true
xbmc = new xbmcApi
xbmc.setConnection connection
# enqueu actions so they are called a soon as connection is opened
xbmc.message 'Hello World'More actions, new helpers, tests, ...

