node-osc
Version:
pyOSC inspired library for sending and receiving OSC messages
58 lines (46 loc) • 1.62 kB
JavaScript
/**
* OSC Client and Server Example (ESM with Async/Await)
*
* This is the recommended pattern for modern Node.js applications.
* It demonstrates:
* - Using async/await for cleaner async code
* - Properly waiting for server to be ready
* - Sending multiple messages in parallel
* - Clean shutdown of resources
*
* To run this example:
* node examples/async-await.mjs
*/
// Example: Using async/await with node-osc Client and Server (ESM)
import { once } from "node:events";
import { setImmediate } from "node:timers/promises";
import { Client, Server } from "node-osc";
// Create server on all interfaces, port 3333
const server = new Server(3333, "0.0.0.0");
// Wait for server to be ready using once() - cleaner than event listeners
await once(server, "listening");
console.log("OSC server listening on port 3333");
// Set up message handler
// Messages arrive as arrays: [address, ...arguments]
server.on("message", (msg) => {
const [address, ...args] = msg;
console.log("Received:", address, args);
});
// Create client pointing to localhost
const client = new Client("127.0.0.1", 3333);
// Send a simple message
await client.send("/hello", "world");
console.log("Sent /hello");
// Send multiple messages in parallel using Promise.all()
await Promise.all([
client.send("/counter", 1),
client.send("/counter", 2),
client.send("/counter", 3),
]);
console.log("Sent counters");
// Allow socket I/O to be processed before shutting down
await setImmediate();
// Clean shutdown - always close resources
await client.close();
await server.close();
console.log("Client and server closed");