var port = 18080; var connectionMode = "ws:"; var wsPrint = null; let wsGetPrinterList = null; var CHUNK_SIZE = 1024 * 64; const WebSocketPrint = function (serverURL, strPrinterName, request, callback) { var _websocket; var _callback = callback; var _request = request; var _connectedsocket = false; var onMessage = function (msg) { if (_websocket.readyState == 1) { var res = JSON.parse(msg.data); var ret = res.statusMessage; var printerStatus; if (res.printerStatus !== undefined) { printerStatus = res.printerStatus.message; ret += ":" + printerStatus; } _callback(res); } else { _callback(msg.data); } }; var onClose = function (msg) { if (!_connectedsocket) { _callback("Cannot connect to server"); } _websocket.close(); _connectedsocket = false; wsPrint = null; }; var webSocketInit = function (uri) { _websocket = new WebSocket(uri); _websocket.binaryType = "arraybuffer"; _websocket.onopen = function (event) { console.log("open : " + uri); }; _websocket.onerror = function (event) { wsPrint = null; if (_websocket.readyState == 3) { _callback("Cannot connect to server"); } }; _websocket.onmessage = function (msg) { onMessage(msg); }; _websocket.onclose = function (msg) { onClose(msg); }; }; webSocketInit(serverURL + strPrinterName + _request); this.send = function (data) { const sendData = () => { for (let i = 0; i < data.length; i += CHUNK_SIZE) { const chunk = data.slice(i, i + CHUNK_SIZE); _websocket.send(chunk); } }; if (_websocket.readyState === WebSocket.OPEN) { sendData(); } else if (_websocket.readyState === WebSocket.CONNECTING) { const originalOnOpen = _websocket.onopen; _websocket.onopen = function(event) { if (originalOnOpen) originalOnOpen(event); sendData(); _connectedsocket = true; }; } }; this.disconnect = function () { if (_websocket && _websocket.readyState === WebSocket.OPEN) { console.log("Closing WebSocket connection..."); _websocket.close(); } }; }; const WebSocketGetPrinterList = function (serverURL, callback) { var _websocket; var _callback = callback; var _connectedsocket = false; var onMessage = function (msg) { if (_websocket.readyState == 1) { var res = JSON.parse(msg.data); _callback(res); } else { a; _callback(msg.data); } }; var onClose = function (msg) { if (!_connectedsocket) { _callback("Cannot connect to server"); } _websocket.close(); _connectedsocket = false; wsGetPrinterList = null; }; var webSocketInit = function (uri) { _websocket = new WebSocket(uri); _websocket.onopen = function (event) { console.log("open : " + uri); }; _websocket.onerror = function (event) { wsGetPrinterList = null; if (_websocket.readyState == 3) { _callback("Cannot connect to server"); } }; _websocket.onmessage = function (msg) { onMessage(msg); }; _websocket.onclose = function (msg) { console.log("WebSocket connection closed"); onClose(msg); }; }; webSocketInit(serverURL); this.send = function (strSubmit) { if (_websocket.readyState == 1) { _websocket.send(strSubmit); } else { _websocket.onopen = function () { if (_websocket.readyState == 1) { _websocket.send(strSubmit); _connectedsocket = true; } }; } }; }; function setPort(serverPort) { port = serverPort; } function getServerURL() { var localAddress = `//127.0.0.1:${port}/WebSDK/`; var serverURL = connectionMode + localAddress; return { url: serverURL, }; } function setConnectionMode(mode) { connectionMode = mode; } function requestPrint(strPrinterName, strSubmit, _callback) { _callback(""); var serverURL = getServerURL().url; console.log(serverURL); if (wsPrint == null) wsPrint = new WebSocketPrint(serverURL, strPrinterName, "", _callback); const encoder = new TextEncoder(); const bytesSubmit = encoder.encode(strSubmit); wsPrint.send(bytesSubmit); } function getPrinterList(category, _callback) { var serverURL = getServerURL().url + "getPrinterList"; if (wsGetPrinterList == null) { wsGetPrinterList = new WebSocketGetPrinterList(serverURL, _callback); } wsGetPrinterList.send(JSON.stringify(category)); } export { setPort, getServerURL, setConnectionMode, requestPrint, getPrinterList, wsPrint, WebSocketPrint, WebSocketGetPrinterList }