46.3.0 • Published 5 months ago

@tv2media/server-core-integration v46.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

Sofie: The Modern TV News Studio Automation System (Server Core Integration)

npm

This library is used to connect to the Sofie Server Core from other Node processes.

This is a part of the Sofie TV News Studio Automation System.

Note: This library does not follow semver. It is recommended to add it in your package json like "@sofie-automation/server-core-integration": "~1.16.0" matching the version of sofie core you are running

Getting started

Typescript

import { CoreConnection, PeripheralDeviceAPI } from '@sofie-automation/server-core-integration'

// Set up our basic credentials:
let core = new CoreConnection({
	deviceId: 'device01', // Unique id
	deviceToken: 'mySecretToken', // secret token, used to authenticate this device
	deviceType: PeripheralDeviceAPI.DeviceType.PLAYOUT,
	deviceName: 'My peripheral device',
})
core.on('error', console.log)
// Initiate connection to Core:
core
	.init({
		host: '127.0.0.1',
		port: 3000,
	})
	.then(() => {
		// Connection has been established
		console.log('Connected!')
		// Set device status:
		return core.setStatus({
			statusCode: PeripheralDeviceAPI.StatusCode.GOOD,
			messages: ['Everything is awesome!'],
		})
	})
	.catch((err) => {
		console.log(err)
	})

Development

This library is developed as part of Sofie Server Core. See there for more instructions

  • Build
    • Build, yarn build
    • Run tests, yarn test
    • Run tests & watch, yarn watch

DDP Client

This library has a self-contained DDP client that can be used independently of the rest of the module.

import { DDPClient, DDPConnectorOptions } from 'tv-automation-server-integration'

let options: DDPConnectorOptions = {
	host: '127.0.0.1',
	port: 5432
}

let ddp = new DDPClient(options)
ddp.on('connected', /* ... */ )
ddp.connect((err: any) => {
	if (err) {
		/* ... handle error ... */
		return
	}
	let subId = ddp.subscribe('expectedMediaItems')
	ddp.observe('expectedMediaItems', /* added cb */, /* changed cb */, /* removed cb */)

	/* ... then later ... */
	ddp.unsub(subId)
	ddp.close()
})

See the documentation on the DDP client class for more details.