Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to open exist tty using net.Socket ? #37780

Closed
oppai opened this issue Mar 16, 2021 · 6 comments · Fixed by #53567
Closed

How to open exist tty using net.Socket ? #37780

oppai opened this issue Mar 16, 2021 · 6 comments · Fixed by #53567
Labels
doc Issues and PRs related to the documentations. tty Issues and PRs related to the tty subsystem.

Comments

@oppai
Copy link

oppai commented Mar 16, 2021

Hi, there

I want to open exist tty using net.Socket. But I got an error like a below.

I have two questions.
First, how can I open tty using net.Socket module ?
Second, I success to open tty using tty.ReadStream like a them. But I didn't find it in document. It is trial function? (It is not safe to use in production?)

thank you

  • Node.js Version: v14.16.0
  • OS: MacOS / Linux
  • Scope (install, code, runtime, meta, other?): code
  • Module (and version) (if relevant): net.Socket
var fs = require('fs')
var net = require('net')

const fd = fs.openSync('/dev/ttys003', 'r+');
const tty = new net.Socket({fd, readable: true})
tty.on('data', (data) => {
  console.log(data)
})
TypeError [ERR_INVALID_FD_TYPE]: Unsupported fd type: TTY
    at createHandle (net.js:147:9)
    at new Socket (net.js:328:22)
    at Object.<anonymous> (/Users/hiroaki.murayama/progate/progate_ide/v2/src/runtime/sample.js:5:13)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47 {
  code: 'ERR_INVALID_FD_TYPE'
@RaisinTen
Copy link
Contributor

I don't think opening a socket to a TTY fd is supported yet.
At the bottom of https://nodejs.org/api/net.html#net_class_net_socket:

The newly created socket can be either a TCP socket or a streaming IPC endpoint, depending on what it connect() to.

@addaleax
Copy link
Member

@RaisinTen No, it is supported. I think this might also qualify as a bug in the net module.

In any case, one can use tty.ReadStream(fd) and tty.WriteStream(fd) to create TTY streams (which should be one class but for some reason isn’t), and both of these inherit from net.Socket.

@RaisinTen
Copy link
Contributor

@addaleax The passed fd type gets rejected here:

node/lib/net.js

Lines 140 to 156 in 3bba40a

function createHandle(fd, is_server) {
validateInt32(fd, 'fd', 0);
const type = guessHandleType(fd);
if (type === 'PIPE') {
return new Pipe(
is_server ? PipeConstants.SERVER : PipeConstants.SOCKET
);
}
if (type === 'TCP') {
return new TCP(
is_server ? TCPConstants.SERVER : TCPConstants.SOCKET
);
}
throw new ERR_INVALID_FD_TYPE(type);
}
. So, this can be fixed by adding an option to accept TTY fds. Should we move this issue to the main repo?

@addaleax
Copy link
Member

Yeah, although I think there might also be another issue somewhere for merging the two TTY classes? I think that would be the best solution here.

@oppai
Copy link
Author

oppai commented Mar 17, 2021

Thank you, @addaleax and @RaisinTen !
I understand that net.Socket is not supported for tty fd, and I should use tty module instead of net.Socket.

So, there is no document about accepting fd in tty modules.
https://nodejs.org/api/tty.html#tty_class_tty_readstream

it is missing? or experimental function?

@addaleax
Copy link
Member

I don’t know why the constructors are not documented, but they should be, yes.

@RaisinTen RaisinTen transferred this issue from nodejs/help Mar 17, 2021
@Ayase-252 Ayase-252 added doc Issues and PRs related to the documentations. tty Issues and PRs related to the tty subsystem. labels Mar 31, 2021
Ayase-252 added a commit to Ayase-252/node that referenced this issue Apr 1, 2021
deepak1556 pushed a commit to microsoft/node-pty that referenced this issue Mar 18, 2024
* Remove deprecated API `process.binding`

Originally designed to work with ancient node.js 0.12 and io.js

* Fix node `net.Socket` limitations

nodejs/node#37780
targos pushed a commit that referenced this issue Jul 28, 2024
Co-authored-by: Qingyu Deng <[email protected]>
PR-URL: #53567
Fixes: #37780
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Raz Luvaton <[email protected]>
Reviewed-By: Claudio Wunder <[email protected]>
marco-ippolito pushed a commit that referenced this issue Aug 19, 2024
Co-authored-by: Qingyu Deng <[email protected]>
PR-URL: #53567
Fixes: #37780
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Raz Luvaton <[email protected]>
Reviewed-By: Claudio Wunder <[email protected]>
marco-ippolito pushed a commit that referenced this issue Aug 19, 2024
Co-authored-by: Qingyu Deng <[email protected]>
PR-URL: #53567
Fixes: #37780
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Raz Luvaton <[email protected]>
Reviewed-By: Claudio Wunder <[email protected]>
marco-ippolito pushed a commit that referenced this issue Aug 19, 2024
Co-authored-by: Qingyu Deng <[email protected]>
PR-URL: #53567
Fixes: #37780
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Raz Luvaton <[email protected]>
Reviewed-By: Claudio Wunder <[email protected]>
NorthernMan54 added a commit to homebridge/node-pty-prebuilt-multiarch that referenced this issue Nov 13, 2024
commit 8bdbd71
Merge: 5063e0e d3ea906
Author: Daniel Imms <[email protected]>
Date:   Fri Oct 4 07:45:35 2024 -0700

    Merge pull request microsoft#723 from microsoft/tyriar/compile_commands

    Move to compile commands on postinstall for fixing intellisense

commit d3ea906
Author: Daniel Imms <[email protected]>
Date:   Fri Oct 4 07:30:55 2024 -0700

    Move to compile commands on postinstall for fixing intellisense

    Fixes microsoft#707

commit 5063e0e
Merge: 589a720 d06ed4f
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 07:27:53 2024 -0700

    Merge pull request microsoft#722 from microsoft/tyriar/log

    Fix typo in trace log

commit d06ed4f
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 06:56:29 2024 -0700

    Fix typo in trace log

    Follow up microsoft#720

commit 589a720
Merge: de86139 353f219
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 06:33:40 2024 -0700

    Merge pull request microsoft#721 from microsoft/tyriar/deps

    Move from yarn to npm

commit de86139
Merge: b2d9866 53e60b0
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 06:24:35 2024 -0700

    Merge pull request microsoft#719 from microsoft/tyriar/move_buffer_to_heap

    Move buffer_ to heap

commit b2d9866
Merge: 1ece036 d2bf81f
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 06:22:56 2024 -0700

    Merge pull request microsoft#718 from microsoft/tyriar/717

    Close piClient.hThread handle

commit 1ece036
Merge: 796e11e 7e431b9
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 06:20:46 2024 -0700

    Merge pull request microsoft#720 from microsoft/tyriar/catch_winpty_deconstructor

    Catch possible exceptions in ~Agent

commit 353f219
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 06:20:09 2024 -0700

    Regenerate dependencies

commit 13c661d
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 06:12:07 2024 -0700

    yarn.lock -> package-lock.json

    Fixes microsoft#712

commit 7e431b9
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 06:07:45 2024 -0700

    Catch possible exceptions in ~Agent

    Fixes warning:

    deps\winpty\src\agent\Agent.cc(231): warning C4722: 'Agent::~Agent': destructor never returns, potential memory leak

commit 53e60b0
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 06:00:25 2024 -0700

    Move buffer_ to heap

    Resolves warning:

    src\win\path_util.cc(54): warning C6262: Function uses '131804' bytes of stack:  exceeds /analyze:stacksize '16384'.  Consider moving some data to heap.

commit d2bf81f
Author: Daniel Imms <[email protected]>
Date:   Thu Oct 3 05:54:52 2024 -0700

    Close piClient.hThread handle

    Fixes microsoft#717

commit 796e11e
Merge: cb94da7 59771c0
Author: Daniel Imms <[email protected]>
Date:   Fri Sep 27 07:19:10 2024 -0700

    Merge pull request microsoft#713 from microsoft/tyriar/711

    Bring back clear impl

commit 59771c0
Author: Daniel Imms <[email protected]>
Date:   Mon Sep 9 06:28:10 2024 -0700

    Bring back clear impl

    Fixes microsoft#711

commit cb94da7
Merge: 8c0a6d7 4f2f641
Author: Daniel Imms <[email protected]>
Date:   Sun Aug 11 09:34:35 2024 -0700

    Merge pull request microsoft#704 from microsoft/tyriar/npm_arch

    Copy right dll/exe based on npm_config_arch

commit 4f2f641
Author: Daniel Imms <[email protected]>
Date:   Sun Aug 11 08:33:05 2024 -0700

    Copy right dll/exe based on npm_config_arch

    Part of microsoft/vscode#224488
    Part of microsoft/vscode#225355

commit 8c0a6d7
Merge: 8fc21c9 ef1cefc
Author: Daniel Imms <[email protected]>
Date:   Fri Aug 9 09:09:55 2024 -0700

    Merge pull request microsoft#703 from microsoft/tyriar/conpty_prefix

    Fix correct method being loaded when not using conptydll

commit ef1cefc
Author: Daniel Imms <[email protected]>
Date:   Fri Aug 9 08:37:52 2024 -0700

    Fix correct method being loaded when not using conptydll

    Part of microsoft/vscode#224488

commit 8fc21c9
Merge: 7a8c67c 061487a
Author: Daniel Imms <[email protected]>
Date:   Tue Aug 6 14:19:47 2024 -0700

    Merge pull request microsoft#702 from microsoft/tyriar/conpty_update

    Update to newer version of conpty

commit 061487a
Author: Daniel Imms <[email protected]>
Date:   Tue Aug 6 13:56:45 2024 -0700

    Update to newer version of conpty

commit 7a8c67c
Merge: 485379c cf62104
Author: Daniel Imms <[email protected]>
Date:   Tue Aug 6 05:36:19 2024 -0700

    Merge pull request microsoft#700 from microsoft/tyriar/conpty_path

    Get path of conpty.node for conpty.dll

commit cf62104
Author: Daniel Imms <[email protected]>
Date:   Tue Aug 6 05:32:14 2024 -0700

    Get path of conpty.node for conpty.dll

    Part of microsoft/vscode#224488

commit 485379c
Merge: 1247f91 98d8566
Author: Daniel Imms <[email protected]>
Date:   Mon Aug 5 09:04:40 2024 -0700

    Merge pull request microsoft#699 from microsoft/tyriar/conptydll_exception

    Improve can't find conpty.dll exception message

commit 98d8566
Author: Daniel Imms <[email protected]>
Date:   Mon Aug 5 08:21:32 2024 -0700

    Improve can't find conpty.dll exception message

    Part of microsoft/vscode#224488

commit 1247f91
Merge: 47c16e2 5e99f76
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 13:30:11 2024 -0700

    Merge pull request microsoft#698 from microsoft/tyriar/publish_third_party

    Publish third_party folder

commit 5e99f76
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 13:22:55 2024 -0700

    Publish third_party folder

commit 47c16e2
Merge: 5874200 59f5d47
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 12:41:41 2024 -0700

    Merge pull request microsoft#697 from microsoft/tyriar/conpty4

    Disable APIScan and reduce test flakiness on Windows

commit 59f5d47
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 11:48:07 2024 -0700

    Fix winpty resize and reduce test flakiness

commit 055cd3f
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 11:38:28 2024 -0700

    Disable APIScan task

commit 5874200
Merge: 2622bd1 dde63ec
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 11:25:33 2024 -0700

    Merge pull request microsoft#696 from microsoft/tyriar/node16

    Don't run CI for node 16

commit dde63ec
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 11:22:01 2024 -0700

    Don't run CI for node 16

commit 2622bd1
Merge: bd7fa4f 7c4e9ed
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 10:47:54 2024 -0700

    Merge pull request microsoft#695 from microsoft/tyriar/conpty2

    Ship third_party folder with module

commit 7c4e9ed
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 10:24:27 2024 -0700

    Ship third_party folder with module

    This needs to be there to copy over the right binary on postinstall

    Part of microsoft/vscode#224488

commit bd7fa4f
Merge: efbf8eb 4392169
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 09:55:36 2024 -0700

    Merge pull request microsoft#694 from microsoft/tyriar/conptydll

    Ship conpty.dll/OpenConsole.exe with opt-in experimental option useConptyDll

commit 4392169
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 08:33:27 2024 -0700

    Copy conpty.dll and openconsole.exe depending on arch in postinstall

commit ddcd0b0
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 08:14:27 2024 -0700

    Add useConptyDll option

commit 95f67e7
Author: Daniel Imms <[email protected]>
Date:   Thu Aug 1 08:11:38 2024 -0700

    Add conpty dlls and node headers

commit f2be1af
Author: Daniel Imms <[email protected]>
Date:   Tue Jul 30 11:45:51 2024 -0700

    Get conpty.dll conditionally loading

commit efbf8eb
Merge: 8be08fd 0e791c1
Author: Daniel Imms <[email protected]>
Date:   Tue Jun 18 05:55:56 2024 -0700

    Merge pull request microsoft#687 from microsoft/dependabot/npm_and_yarn/braces-3.0.3

    build(deps): bump braces from 3.0.2 to 3.0.3

commit 8be08fd
Merge: df1ae8c 26f1c69
Author: Daniel Imms <[email protected]>
Date:   Mon Jun 17 07:35:47 2024 -0700

    Merge pull request microsoft#688 from jpcastberg/termios-freebsd

    Include termios.h on freebsd

commit 26f1c69
Author: jpcastberg <[email protected]>
Date:   Sun Jun 16 23:14:24 2024 -0700

    Include termios.h on freebsd

commit 0e791c1
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sun Jun 16 11:12:19 2024 +0000

    build(deps): bump braces from 3.0.2 to 3.0.3

    Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
    - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
    - [Commits](micromatch/braces@3.0.2...3.0.3)

    ---
    updated-dependencies:
    - dependency-name: braces
      dependency-type: indirect
    ...

    Signed-off-by: dependabot[bot] <[email protected]>

commit df1ae8c
Author: Raymond Zhao <[email protected]>
Date:   Tue Apr 16 15:43:10 2024 -0700

    docs: add a note on Spectre-mitigated libraries (microsoft#679)

commit f014e86
Merge: 6aa0758 0fbbcf6
Author: Daniel Imms <[email protected]>
Date:   Thu Apr 11 06:45:41 2024 -0700

    Merge pull request microsoft#678 from microsoft/dependabot/npm_and_yarn/tar-6.2.1

    build(deps): bump tar from 6.2.0 to 6.2.1

commit 0fbbcf6
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Apr 11 12:09:54 2024 +0000

    build(deps): bump tar from 6.2.0 to 6.2.1

    Bumps [tar](https://github.com/isaacs/node-tar) from 6.2.0 to 6.2.1.
    - [Release notes](https://github.com/isaacs/node-tar/releases)
    - [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
    - [Commits](isaacs/node-tar@v6.2.0...v6.2.1)

    ---
    updated-dependencies:
    - dependency-name: tar
      dependency-type: indirect
    ...

    Signed-off-by: dependabot[bot] <[email protected]>

commit 6aa0758
Author: Raymond Zhao <[email protected]>
Date:   Mon Apr 1 11:37:15 2024 -0700

    chore: migrate pipeline to use 1ES template (microsoft#676)

commit 3913479
Author: kkocdko <[email protected]>
Date:   Mon Mar 18 21:01:50 2024 +0800

    chore: remove deprecated api `process.binding` (microsoft#653)

    * Remove deprecated API `process.binding`

    Originally designed to work with ancient node.js 0.12 and io.js

    * Fix node `net.Socket` limitations

    nodejs/node#37780

commit f25bb55
Author: kkocdko <[email protected]>
Date:   Sat Mar 16 00:26:59 2024 +0800

    Upgrade node-gyp to fix microsoft#643 and microsoft#646 (microsoft#673)

commit 783c7ed
Author: Robo <[email protected]>
Date:   Thu Mar 7 22:25:19 2024 +0900

    fix: assertion on node environment shutdown (microsoft#672)

commit 2dab380
Author: Raymond Zhao <[email protected]>
Date:   Mon Mar 4 07:15:19 2024 -0800

    fix: comment out invalid API call (microsoft#669)

commit c712cce
Author: Raymond Zhao <[email protected]>
Date:   Thu Feb 29 11:55:21 2024 -0800

    chore: fix APIScan software name (microsoft#667)

commit a0dd31d
Merge: 0661eaf 0253460
Author: SteVen Batten <[email protected]>
Date:   Sun Feb 25 15:21:58 2024 -0800

    Merge pull request microsoft#666 from microsoft/sbatten/apiscan

    api scan

commit 0253460
Author: SteVen Batten <[email protected]>
Date:   Sun Feb 25 14:59:02 2024 -0800

    fix job name

commit 2483032
Author: SteVen Batten <[email protected]>
Date:   Sun Feb 25 14:57:25 2024 -0800

    api scan

commit 0661eaf
Merge: b1fdda4 e08593d
Author: Daniel Imms <[email protected]>
Date:   Wed Feb 21 07:39:05 2024 -0800

    Merge pull request microsoft#664 from microsoft/dependabot/npm_and_yarn/ip-2.0.1

    build(deps): bump ip from 2.0.0 to 2.0.1

commit e08593d
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Feb 21 01:42:29 2024 +0000

    build(deps): bump ip from 2.0.0 to 2.0.1

    Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
    - [Commits](indutny/node-ip@v2.0.0...v2.0.1)

    ---
    updated-dependencies:
    - dependency-name: ip
      dependency-type: indirect
    ...

    Signed-off-by: dependabot[bot] <[email protected]>

commit b1fdda4
Author: kkocdko <[email protected]>
Date:   Fri Jan 26 17:17:03 2024 +0800

    Port to NAPI (microsoft#644)

    * Port to NAPI

    The "5th pty bug" in microsoft#432 fixed also.

    * Fix help message in pty.cc

    * Move NAPI deps to devDependencies in package.json

    * Apply most of deepak1556's suggestions

    * Fix winpty

    * Fix conpty missing CloseHandle

    * Use unique_ptr to avoid `goto`s

    * Why macos failed?

    * fix: ci and minor cleanups

    * fix build failed on windows

    ---------

    Co-authored-by: deepak1556 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
doc Issues and PRs related to the documentations. tty Issues and PRs related to the tty subsystem.
Projects
None yet
4 participants