// fix for unity 2021 because unity bug in .jslib
if (typeof Runtime === "undefined") {
// if unity doesn't create Runtime, then make it here
// dont ask why this works, just be happy that it does
Runtime = {
dynCall: dynCall
}
}
const address = UTF8ToString(addressPtr);
console.log("Connecting to " + address);
// Create webSocket connection.
webSocket = new WebSocket(address);
webSocket.binaryType = 'arraybuffer';
const index = SimpleWeb.AddNextSocket(webSocket);
// Connection opened
function onOpen (event) {
console.log("Connecting to " + address);
Runtime.dynCall('vi', openCallbackPtr, [index]);
}
function onMessage(event) {
if (event.data instanceof ArrayBuffer) {
var array = new Uint8Array(event.data);
var arrayLength = array.length;
var bufferPtr = _malloc(arrayLength);
var dataBuffer = new Uint8Array(HEAPU8.buffer, bufferPtr, arrayLength);
dataBuffer.set(array);
Runtime.dynCall('viii', messageCallbackPtr, [index, bufferPtr, arrayLength]);
_free(bufferPtr);
}
else {
console.error("message type not supported")
}
}
function onError (event) {
console.error('Socket Error', event);
Runtime.dynCall('vi', errorCallbackPtr, [index]);
}
webSocket.addEventListener('close', function (event) {
console.log("Disconnected from " + address);
Runtime.dynCall('vi', closeCallBackPtr, [index]);
//Unsubscrive all other events
webSocket.removeEventListener('message', onMessage);
webSocket.removeEventListener('open', onOpen);
webSocket.removeEventListener('error', onError);
});
webSocket.addEventListener('message', onMessage);
webSocket.addEventListener('open', onOpen);
webSocket.addEventListener('error', onError);
return index;
}