From 56338f2262661b2e8e78fa04abfe21e4517d7640 Mon Sep 17 00:00:00 2001 From: Rik Berkelder Date: Sat, 30 Jan 2021 03:28:46 +0100 Subject: [PATCH] add events to server, add ability to close client and server --- package.json | 2 +- src/oscClient.ts | 8 ++++++++ src/oscServer.ts | 32 ++++++++++++++++++++++++++++++-- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index b3e2065..67617da 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ts-osc", - "version": "0.2.6", + "version": "0.3.0", "description": "Fully TypeScript-native OSC Client based on osc-min", "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/src/oscClient.ts b/src/oscClient.ts index 0adc201..78ee843 100644 --- a/src/oscClient.ts +++ b/src/oscClient.ts @@ -39,4 +39,12 @@ export class OSCClient { const encoded = toBuffer(address, [arg]); this.sendPacket(encoded); } + + /** + * Close the connection + */ + + public close(): void { + this.socket.close(); + } } diff --git a/src/oscServer.ts b/src/oscServer.ts index 84e6c2b..97b6cf2 100644 --- a/src/oscServer.ts +++ b/src/oscServer.ts @@ -22,17 +22,31 @@ export declare interface OSCServer { @event */ on(event: 'listening', listener: () => void): this; + + /** + * Emitted when OSC socket is closed + @event + */ + + on(event: 'close', listener: () => void): this; + + /** + * Emitted whenever an error occurs + @event + */ + + on(event: 'error', listener: (exception: Error) => void): this; } /** - * OSC Client, handles sending OSC messages + * OSC Server, handles receiving OSC messages ``` const osc = new OSCServer("192.168.0.44", 8000); ``` */ export class OSCServer extends EventEmitter { - private socket: dgram.Socket; + public socket: dgram.Socket; constructor(bindAddress: string, port: number) { super(); @@ -43,6 +57,12 @@ export class OSCServer extends EventEmitter { this.socket.on('listening', () => { this.emit('listening'); }); + this.socket.on('close', () => { + this.emit('close'); + }); + this.socket.on('error', (e) => { + this.emit('error', e); + }); this.socket.on('message', (msg) => { const decoded = fromBuffer(msg); @@ -57,4 +77,12 @@ export class OSCServer extends EventEmitter { } }); } + + /** + * close the server + */ + + public close(): void { + this.socket.close(); + } }