小票打印机
This commit is contained in:
parent
854c120920
commit
36aef6744f
|
|
@ -0,0 +1,192 @@
|
||||||
|
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
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue