74 lines
1.9 KiB
TypeScript
74 lines
1.9 KiB
TypeScript
export interface OSCMessage {
|
|
address: string;
|
|
port: number;
|
|
args: object;
|
|
timetag: number;
|
|
}
|
|
|
|
// Send/receive messages from websocket
|
|
export let outputSocket = new WebSocket("ws://localhost:3000");
|
|
export let inputSocket = new WebSocket("ws://localhost:3001");
|
|
|
|
|
|
outputSocket.onerror = (error: Event) => {
|
|
console.log("[Topos] Failed to connect to OSC daemon:", error.type);
|
|
console.log("[Topos] Note: the daemon must be started before Topos");
|
|
};
|
|
|
|
inputSocket.onerror = (error: Event) => {
|
|
console.log("[Topos] Failed to connect to OSC daemon:", error.type);
|
|
console.log("[Topos] Note: the daemon must be started before Topos");
|
|
};
|
|
|
|
export let oscMessages: any[] = [];
|
|
inputSocket.addEventListener("message", (event) => {
|
|
let data = JSON.parse(event.data);
|
|
if (oscMessages.length >= 1000) {
|
|
oscMessages.shift();
|
|
}
|
|
oscMessages.push(data);
|
|
});
|
|
|
|
// @ts-ignore
|
|
outputSocket.onopen = function(event) {
|
|
console.log("Connected to WebSocket Server");
|
|
// Send an OSC-like message
|
|
outputSocket.send(
|
|
JSON.stringify({
|
|
address: "/successful_connexion",
|
|
port: 3000,
|
|
args: {},
|
|
}),
|
|
);
|
|
|
|
outputSocket.onerror = function(error) {
|
|
console.log("Websocket Error:", error);
|
|
};
|
|
|
|
outputSocket.onmessage = function(event) {
|
|
console.log("Received: ", event.data);
|
|
};
|
|
};
|
|
|
|
export function sendToServer(message: OSCMessage) {
|
|
if (outputSocket.readyState === WebSocket.OPEN) {
|
|
outputSocket.send(JSON.stringify(message));
|
|
} else {
|
|
console.log("WebSocket is not open. Attempting to reconnect...");
|
|
if (
|
|
outputSocket.readyState === WebSocket.CONNECTING ||
|
|
outputSocket.readyState === WebSocket.OPEN
|
|
) {
|
|
outputSocket.close();
|
|
}
|
|
|
|
// Create a new WebSocket connection
|
|
outputSocket = new WebSocket("ws://localhost:3000");
|
|
|
|
// Send the message once the socket is open
|
|
outputSocket.onopen = () => {
|
|
outputSocket.send(JSON.stringify(message));
|
|
};
|
|
}
|
|
}
|