Monday, July 29, 2019

What is Node.js TTY?

The Node.js TTY module contains tty.ReadStream and tty.WriteStream classes. In most cases, there is no need to use this module directly.
You have to use require ('tty') to access this module.
Syntax:
  1. var tty = require('tty');  
When Node.js discovers that it is being run inside a TTY context, then:
  • process.stdin will be a tty.ReadStream instance
  • process.stdout will be a tty.WriteStream instance
To check that if Node.js is running in a TTY context, use the following command:
  1. node -p -e "Boolean(process.stdout.isTTY)"  
Node.js tty example 1

Class: ReadStream

It contains a net.Socket subclass that represents the readable portion of a tty. In normal circumstances,the tty.ReadStream has the only instance named process.stdin in any Node.js program (only when isatty(0) is true).
rs.isRaw: It is a Boolean that is initialized to false. It specifies the current "raw" state of the tty.ReadStream instance.
rs.setRawMode(mode): It should be true or false. It is used to set the properties of the tty.ReadStream to act either as a raw device or default. isRaw will be set to the resulting mode.

Class: WriteStream

It contains a net.Socket subclass that represents the writable portion of a tty. In normal circumstances, the tty.WriteStream has the only instance named process.stdout in any Node.js program (only when isatty(1) is true).
Resize event: This event is used when either of the columns or rows properties has changed.
Syntax:
  1. process.stdout.on('resize', () => {  
  2.   console.log('screen size has changed!');  
  3.   console.log(`${process.stdout.columns}x${process.stdout.rows}`);  
  4. });  
ws.columns: It is used to give the number of columns the TTY currently has. This property gets updated on 'resize' events.
ws.rows: It is used to give the number of rows the TTY currently has. This property gets updated on 'resize' events.

Node.js TTY Example

File: tty.js
  1. var tty = require('tty');  
  2. process.stdin.setRawMode(true);  
  3. process.stdin.resume();  
  4.  console.log('I am leaving now');  
  5. process.stdin.on('keypress', function(char, key) {  
  6.   if (key && key.ctrl && key.name == 'c') {  
  7.      
  8.     process.exit()  
  9.   }  
  10. });  
Output:
Node.js tty example 2

No comments:

Post a Comment