小票打印机
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