Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js xterm.js+;ws+;ssh2不向ssh服务器发送终端调整大小信号(SIGWINCH)_Node.js_Websocket_Sshd_Ssh2 Exec - Fatal编程技术网

Node.js xterm.js+;ws+;ssh2不向ssh服务器发送终端调整大小信号(SIGWINCH)

Node.js xterm.js+;ws+;ssh2不向ssh服务器发送终端调整大小信号(SIGWINCH),node.js,websocket,sshd,ssh2-exec,Node.js,Websocket,Sshd,Ssh2 Exec,在这里重新表述我的问题 我有一个使用“xterm.js”、“ws”和“ssh2”节点模块的web应用程序。一切都很好。除了一件事: SIGWINCH窗口大小调整信号不会发送到sshd服务器或ssh2流。其他SIG、esc、ansi工作正常。Esc[8刚刚消失 在真正的xterm中,echo-e“\e[8;30;120t”调整两端终端的大小。不在这里。sock.send(“\u001b[8;30;120t”)也不会做任何事情 “我的节点”应用程序服务器上的Console.log显示Escape[8

在这里重新表述我的问题

我有一个使用“xterm.js”、“ws”和“ssh2”节点模块的web应用程序。一切都很好。除了一件事:

SIGWINCH窗口大小调整信号不会发送到sshd服务器或ssh2流。其他SIG、esc、ansi工作正常。Esc[8刚刚消失

在真正的xterm中,
echo-e“\e[8;30;120t”
调整两端终端的大小。不在这里。
sock.send(“\u001b[8;30;120t”)
也不会做任何事情

“我的节点”应用程序服务器上的Console.log显示Escape[8(或\e、\u001b或\x1b)无法使用。其他转义代码可以使用--箭头、鼠标单击等


我可以在客户端执行term.resize(x,y),但目前必须在服务器上使用stty。Ssh2的pty将它们设置为仅登录。我如何传播它们?它被困在哪里?

好的。因此,我自己对这个问题的回答是:在浏览器中,使用term.resize(cols,rows)调整本地终端的大小。通过websocket上的ansi转义序列传输列和行。然后,在节点服务器应用程序的ssh2客户端中,使用Regexp匹配调整转义序列,并提取第二个和第三个数字,即列和行的数量(“8”是调整大小的代码)。对提取的列和行使用ssh2客户端调整大小功能(告诉ssh2 psuedoterminal将列和列/行发送到ssh服务器)。不理想,我知道如果我能找到它,有一个更好的方法,但如果你在浏览器中为它创建一个函数并将其添加到事件侦听器以调整窗口大小,它会工作得很好。现在,当我调整浏览器窗口大小时,或者当软键盘弹出或隐藏时,我的终端会话将在客户端和服务器端适当调整大小手机。

对不起,我不是想用问题来回答。就来源而言,大部分只是工作部件来回答堆栈上的问题。就最终产品而言,我有一个带有多个Web应用程序的网站(包括http/s服务器)。我一般还没有公开分享,但我经常在实际工作中使用它们。不过,我正试图为xtermjs项目本身贡献一些代码——基本上是我自己已经拥有的触控功能。目前,它依赖于我的ssh webapp的某些部分,所以当我有空的时候,我需要基本上移植它与僵尸网络搏斗。哦哦哦!我喜欢触摸的声音…非常有趣。我不记得最初发表过这篇评论…但感谢你的回复!是的!是的,确实让手机工作起来容易多了,但在任何触摸屏上都很好。我的控制基于Android的Termux终端,还有一些额外的功能因此,你可以使用鼠标滚轮或箭头键的滑动动作,在上下文中删除,无论是在中间还是在左或右边缘上滑动。如果在诅咒类型的应用程序中,您还可以触摸来定位光标。