Correctly use the new xterm onBinary callback

This commit is contained in:
NI
2019-12-06 22:48:34 +08:00
parent 3aaa85f1e9
commit 7caa245df0
7 changed files with 58 additions and 12 deletions

View File

@@ -16,6 +16,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import * as iconv from "iconv-lite";
import * as buffer from "buffer/";
import Exception from "./exception.js";
@@ -330,6 +331,18 @@ export function strToUint8Array(d) {
return r;
}
/**
* Convert string into a binary {Uint8Array}
*
* @param {string} d Input
*
* @returns {Uint8Array} Output
*
*/
export function strToBinary(d) {
return new Uint8Array(buffer.Buffer.from(d, "binary").buffer);
}
/**
* Parse IPv6 address. ::ffff: notation is NOT supported
*

View File

@@ -20,6 +20,7 @@ import * as iconv from "iconv-lite";
import * as subscribe from "../stream/subscribe.js";
import * as reader from "../stream/reader.js";
import * as color from "../commands/color.js";
import * as common from "../commands/common.js";
class Control {
constructor(data, color) {
@@ -125,6 +126,14 @@ class Control {
return this.sender(this.charsetEncoder(data));
}
sendBinary(data) {
if (this.closed) {
return;
}
return this.sender(common.strToBinary(data));
}
color() {
return this.colors.dark;
}

View File

@@ -20,6 +20,7 @@ import * as iconv from "iconv-lite";
import * as subscribe from "../stream/subscribe.js";
import * as reader from "../stream/reader.js";
import * as color from "../commands/color.js";
import * as common from "../commands/common.js";
import Exception from "../commands/exception.js";
// const maxReadBufSize = 1024;
@@ -457,13 +458,8 @@ class Control {
return -1;
}
send(data) {
if (this.closed) {
return;
}
sendSeg(enc) {
let currentLen = 0;
const enc = this.charsetEncoder(data);
while (currentLen < enc.length) {
const iacPos = this.searchNextIAC(currentLen, enc);
@@ -481,6 +477,22 @@ class Control {
}
}
send(data) {
if (this.closed) {
return;
}
this.sendSeg(this.charsetEncoder(data));
}
sendBinary(data) {
if (this.closed) {
return;
}
return this.sendSeg(common.strToBinary(data));
}
color() {
return this.colors.dark;
}

View File

@@ -104,7 +104,7 @@ class Term {
return;
}
control.send(data);
control.sendBinary(data);
});
this.term.onKey(ev => {