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