forked from Simnation/Main
85 lines
2 KiB
JavaScript
85 lines
2 KiB
JavaScript
let webSocket = null
|
|
|
|
/**
|
|
* Connect to the YaCA voice plugin
|
|
*/
|
|
function connect() {
|
|
console.log('[YaCA-Websocket] Trying to Connect to YaCA WebSocket...')
|
|
|
|
try {
|
|
webSocket = new window.WebSocket('ws://127.0.0.1:30125/')
|
|
} catch {
|
|
connect()
|
|
}
|
|
|
|
webSocket.onmessage = (event) => {
|
|
if (!event) return
|
|
sendNuiData('YACA_OnMessage', event.data)
|
|
}
|
|
|
|
webSocket.onopen = (event) => {
|
|
if (!event) return
|
|
sendNuiData('YACA_OnConnected')
|
|
}
|
|
|
|
webSocket.onclose = (event) => {
|
|
if (!event) return
|
|
|
|
sendNuiData('YACA_OnDisconnected', {
|
|
code: event.code,
|
|
reason: event.reason,
|
|
})
|
|
|
|
setTimeout(() => {
|
|
connect()
|
|
}, 1000)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Send a command to the YaCA voice plugin
|
|
*
|
|
* @param command - The command to send as a object
|
|
*/
|
|
function runCommand(command) {
|
|
if (!webSocket || webSocket.readyState !== WebSocket.OPEN) {
|
|
return
|
|
}
|
|
|
|
webSocket.send(JSON.stringify(command))
|
|
}
|
|
|
|
/**
|
|
* Send a NUI message to the client
|
|
*
|
|
* @param event - The name of the callback
|
|
* @param data - The data to send
|
|
*/
|
|
function sendNuiData(event, data = {}) {
|
|
// skipcq: JS-0125
|
|
fetch(`https://${GetParentResourceName()}/${event}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
},
|
|
body: JSON.stringify(data),
|
|
}).catch((error) => console.error('[YaCA-Websocket] Error sending NUI Message:', error))
|
|
}
|
|
|
|
$(() => {
|
|
window.addEventListener('DOMContentLoaded', () => {
|
|
sendNuiData('YACA_OnNuiReady')
|
|
})
|
|
|
|
window.addEventListener('message', (event) => {
|
|
if (event.data.action === 'connect') {
|
|
connect()
|
|
} else if (event.data.action === 'command') {
|
|
runCommand(event.data.data)
|
|
} else if (event.data.action === 'close') {
|
|
if (webSocket) webSocket.close()
|
|
} else {
|
|
console.error('[YaCA-Websocket] Unknown message:', event.data)
|
|
}
|
|
})
|
|
})
|