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=newTCPConnectionhost:'127.0.0.1'port:9090verbose:truexbmc=newXbmcApixbmc.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 :
varXbmc=require('xbmc');varconnection=newXbmc.TCPConnection({host: '127.0.0.1',port: 9000,verbose: false});varxbmcApi=newXbmc.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=newTCPConnectionhost:'127.0.0.1'port:9090verbose:truexbmc=newXbmcApixbmc.setConnection connection
# run actions after received a 'connection:open' eventxbmc.on'connection:open', ->xbmc.message'Hello World'connection=newTCPConnectionhost:'127.0.0.1'port:9090verbose:truexbmc=newxbmcApixbmc.setConnection connection
# enqueu actions so they are called a soon as connection is openedxbmc.message'Hello World'More actions, new helpers, tests, ...

