mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-16 04:43:35 +00:00
feat: add change endpoint to ws (#618)
* feat: add change endpoint to ws
This commit is contained in:
@@ -3,7 +3,7 @@ import { LogOrigin, OSCSettings } from 'ontime-types';
|
||||
import { Server } from 'node-osc';
|
||||
|
||||
import { IAdapter } from './IAdapter.js';
|
||||
import { dispatchFromAdapter } from '../controllers/integrationController.js';
|
||||
import { dispatchFromAdapter, type ChangeOptions } from '../controllers/integrationController.js';
|
||||
import { logger } from '../classes/Logger.js';
|
||||
|
||||
export class OscServer implements IAdapter {
|
||||
@@ -36,12 +36,36 @@ export class OscServer implements IAdapter {
|
||||
return;
|
||||
}
|
||||
|
||||
let transformedPayload: unknown = args;
|
||||
// we need to transform the params for the change endpoint
|
||||
// OSC: ontime/change/{eventID}/{propertyName} value
|
||||
if (path === 'change') {
|
||||
if (params.length < 2) {
|
||||
logger.error(LogOrigin.Rx, 'OSC IN: No params provided for change');
|
||||
return;
|
||||
}
|
||||
|
||||
if (args === undefined) {
|
||||
logger.error(LogOrigin.Rx, 'OSC IN: No valid payload provided for change');
|
||||
return;
|
||||
}
|
||||
|
||||
const eventId = params[0];
|
||||
const property = params[1];
|
||||
const value: string | number | boolean = args as string | number | boolean;
|
||||
|
||||
transformedPayload = {
|
||||
eventId,
|
||||
property,
|
||||
value,
|
||||
} satisfies ChangeOptions;
|
||||
}
|
||||
|
||||
try {
|
||||
const reply = dispatchFromAdapter(
|
||||
path,
|
||||
{
|
||||
payload: args,
|
||||
params,
|
||||
payload: transformedPayload,
|
||||
},
|
||||
'osc',
|
||||
);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
import { LogOrigin } from 'ontime-types';
|
||||
|
||||
import { WebSocket, WebSocketServer } from 'ws';
|
||||
import type { Server } from 'http';
|
||||
|
||||
import getRandomName from '../utils/getRandomName.js';
|
||||
import { IAdapter } from './IAdapter.js';
|
||||
@@ -43,7 +44,7 @@ export class SocketServer implements IAdapter {
|
||||
this.wss = null;
|
||||
}
|
||||
|
||||
init(server) {
|
||||
init(server: Server) {
|
||||
this.wss = new WebSocketServer({ path: '/ws', server });
|
||||
|
||||
this.wss.on('connection', (ws) => {
|
||||
|
||||
Reference in New Issue
Block a user