Performs transparent encryption of written data and all required TLS negotiation.

Instances of `tls.TLSSocket` implement the duplex `Stream` interface.

Methods that return TLS connection metadata (e.g.TLSSocket.getPeerCertificate will only return data while the connection is open.

since

  v0.11.4

### Hierarchy

- Socket
  - TLSSocket

## Index

### Constructors

- constructor

### Properties

- allowHalfOpen
- alpnProtocol
- authorizationError
- authorized
- bufferSize
- bytesRead
- bytesWritten
- connecting
- destroyed
- encrypted
- localAddress
- localPort
- readable
- readableAborted
- readableDidRead
- readableEncoding
- readableEnded
- readableFlowing
- readableHighWaterMark
- readableLength
- readableObjectMode
- remoteAddress
- remoteFamily
- remotePort
- writable
- writableCorked
- writableEnded
- writableFinished
- writableHighWaterMark
- writableLength
- writableObjectMode
- captureRejectionSymbol
- captureRejections
- defaultMaxListeners
- errorMonitor

### Methods

- [asyncIterator]
- _construct
- _destroy
- _final
- _read
- _write
- _writev
- addListener
- address
- connect
- cork
- destroy
- disableRenegotiation
- emit
- enableTrace
- end
- eventNames
- exportKeyingMaterial
- getCertificate
- getCipher
- getEphemeralKeyInfo
- getFinished
- getMaxListeners
- getPeerCertificate
- getPeerFinished
- getPeerX509Certificate
- getProtocol
- getSession
- getSharedSigalgs
- getTLSTicket
- getX509Certificate
- isPaused
- isSessionReused
- listenerCount
- listeners
- off
- on
- once
- pause
- pipe
- prependListener
- prependOnceListener
- push
- rawListeners
- read
- ref
- removeAllListeners
- removeListener
- renegotiate
- resume
- setDefaultEncoding
- setEncoding
- setKeepAlive
- setMaxListeners
- setMaxSendFragment
- setNoDelay
- setTimeout
- uncork
- unpipe
- unref
- unshift
- wrap
- write
- from
- getEventListeners
- isDisturbed
- listenerCount
- on
- once

## Constructors

### constructor

- new TLSSocket(socket: Socket, options?: TLSSocketOptions): TLSSocket

- Overrides Socket.constructor

  Construct a new tls.TLSSocket object from an existing TCP socket.

  #### Parameters

  - ##### socket: Socket

  - ##### Optional options: TLSSocketOptions

  #### Returns TLSSocket

## Properties

### allowHalfOpen

allowHalfOpen: boolean

Inherited from Socket.allowHalfOpen

If `false` then the stream will automatically end the writable side when the readable side ends. Set initially by the `allowHalfOpen` constructor option, which defaults to `false`.

This can be changed manually to change the half-open behavior of an existing`Duplex` stream instance, but must be changed before the `'end'` event is emitted.

since

  v0.9.4

### alpnProtocol

alpnProtocol: string | false

String containing the selected ALPN protocol. Before a handshake has completed, this value is always null. When a handshake is completed but not ALPN protocol was selected, tlsSocket.alpnProtocol equals false.

### authorizationError

authorizationError: <internal>.Error

Returns the reason why the peer's certificate was not been verified. This property is set only when `tlsSocket.authorized === false`.

since

  v0.11.4

### authorized

authorized: boolean

Returns `true` if the peer certificate was signed by one of the CAs specified when creating the `tls.TLSSocket` instance, otherwise `false`.

since

  v0.11.4

### Readonly bufferSize

bufferSize: number

Inherited from Socket.bufferSize

This property shows the number of characters buffered for writing. The buffer may contain strings whose length after encoding is not yet known. So this number is only an approximation of the number of bytes in the buffer.

`net.Socket` has the property that `socket.write()` always works. This is to help users get up and running quickly. The computer cannot always keep up with the amount of data that is written to a socket. The network connection simply might be too slow. Node.js will internally queue up the data written to a socket and send it out over the wire when it is possible.

The consequence of this internal buffering is that memory may grow. Users who experience large or growing `bufferSize` should attempt to "throttle" the data flows in their program with `socket.pause()` and `socket.resume()`.

since

  v0.3.8

deprecated

  Since v14.6.0 - Use `writableLength` instead.

### Readonly bytesRead

bytesRead: number

Inherited from Socket.bytesRead

The amount of received bytes.

since

  v0.5.3

### Readonly bytesWritten

bytesWritten: number

Inherited from Socket.bytesWritten

The amount of bytes sent.

since

  v0.5.3

### Readonly connecting

connecting: boolean

Inherited from Socket.connecting

If `true`,`socket.connect(options[, connectListener])` was called and has not yet finished. It will stay `true` until the socket becomes connected, then it is set to `false` and the `'connect'` event is emitted. Note that the `socket.connect(options[, connectListener])` callback is a listener for the `'connect'` event.

since

  v6.1.0

### Readonly destroyed

destroyed: boolean

Inherited from Socket.destroyed

See `writable.destroyed` for further details.

### encrypted

encrypted: boolean

Always returns `true`. This may be used to distinguish TLS sockets from regular`net.Socket` instances.

since

  v0.11.4

### Optional Readonly localAddress

localAddress?: string

Inherited from Socket.localAddress

The string representation of the local IP address the remote client is connecting on. For example, in a server listening on `'0.0.0.0'`, if a client connects on `'192.168.1.1'`, the value of `socket.localAddress` would be`'192.168.1.1'`.

since

  v0.9.6

### Optional Readonly localPort

localPort?: number

Inherited from Socket.localPort

The numeric representation of the local port. For example, `80` or `21`.

since

  v0.9.6

### readable

readable: boolean

Inherited from Socket.readable

Is `true` if it is safe to call `readable.read()`, which means the stream has not been destroyed or emitted `'error'` or `'end'`.

since

  v11.4.0

### Readonly readableAborted

readableAborted: boolean

Inherited from Socket.readableAborted

Returns whether the stream was destroyed or errored before emitting `'end'`.

since

  v16.8.0

experimental

### Readonly readableDidRead

readableDidRead: boolean

Inherited from Socket.readableDidRead

Returns whether `'data'` has been emitted.

since

  v16.7.0

experimental

### Readonly readableEncoding

readableEncoding: BufferEncoding

Inherited from Socket.readableEncoding

Getter for the property `encoding` of a given `Readable` stream. The `encoding`property can be set using the `readable.setEncoding()` method.

since

  v12.7.0

### Readonly readableEnded

readableEnded: boolean

Inherited from Socket.readableEnded

Becomes `true` when `'end'` event is emitted.

since

  v12.9.0

### Readonly readableFlowing

readableFlowing: boolean

Inherited from Socket.readableFlowing

This property reflects the current state of a `Readable` stream as described in the `Three states` section.

since

  v9.4.0

### Readonly readableHighWaterMark

readableHighWaterMark: number

Inherited from Socket.readableHighWaterMark

Returns the value of `highWaterMark` passed when creating this `Readable`.

since

  v9.3.0

### Readonly readableLength

readableLength: number

Inherited from Socket.readableLength

This property contains the number of bytes (or objects) in the queue ready to be read. The value provides introspection data regarding the status of the `highWaterMark`.

since

  v9.4.0

### Readonly readableObjectMode

readableObjectMode: boolean

Inherited from Socket.readableObjectMode

Getter for the property `objectMode` of a given `Readable` stream.

since

  v12.3.0

### Optional Readonly remoteAddress

remoteAddress?: string

Inherited from Socket.remoteAddress

The string representation of the remote IP address. For example,`'74.125.127.100'` or `'2001:4860:a005::68'`. Value may be `undefined` if the socket is destroyed (for example, if the client disconnected).

since

  v0.5.10

### Optional Readonly remoteFamily

remoteFamily?: string

Inherited from Socket.remoteFamily

The string representation of the remote IP family. `'IPv4'` or `'IPv6'`.

since

  v0.11.14

### Optional Readonly remotePort

remotePort?: number

Inherited from Socket.remotePort

The numeric representation of the remote port. For example, `80` or `21`.

since

  v0.5.10

### Readonly writable

writable: boolean

Inherited from Socket.writable

### Readonly writableCorked

writableCorked: number

Inherited from Socket.writableCorked

### Readonly writableEnded

writableEnded: boolean

Inherited from Socket.writableEnded

### Readonly writableFinished

writableFinished: boolean

Inherited from Socket.writableFinished

### Readonly writableHighWaterMark

writableHighWaterMark: number

Inherited from Socket.writableHighWaterMark

### Readonly writableLength

writableLength: number

Inherited from Socket.writableLength

### Readonly writableObjectMode

writableObjectMode: boolean

Inherited from Socket.writableObjectMode

### Static Readonly captureRejectionSymbol

captureRejectionSymbol: typeof captureRejectionSymbol

Inherited from Socket.captureRejectionSymbol

### Static captureRejections

captureRejections: boolean

Inherited from Socket.captureRejections

Sets or gets the default captureRejection value for all emitters.

### Static defaultMaxListeners

defaultMaxListeners: number

Inherited from Socket.defaultMaxListeners

### Static Readonly errorMonitor

errorMonitor: typeof errorMonitor

Inherited from Socket.errorMonitor

This symbol shall be used to install a listener for only monitoring `'error'` events. Listeners installed using this symbol are called before the regular `'error'` listeners are called.

Installing a listener using this symbol does not change the behavior once an `'error'` event is emitted, therefore the process will still crash if no regular `'error'` listener is installed.

## Methods

### [asyncIterator]

- [asyncIterator](): AsyncIterableIterator<any>

- Inherited from Socket.[asyncIterator]

  #### Returns AsyncIterableIterator<any>

### Optional _construct

- _construct(callback: (error?: <internal>.Error) => void): void

- Inherited from Socket._construct

  #### Parameters

  - ##### callback: (error?: <internal>.Error) => void

    - - (error?: <internal>.Error): void

      - #### Parameters

        - ##### Optional error: <internal>.Error

        #### Returns void

### _destroy

- _destroy(error: <internal>.Error, callback: (error: <internal>.Error) => void): void

- Inherited from Socket._destroy

  #### Parameters

  - ##### error: <internal>.Error

  - ##### callback: (error: <internal>.Error) => void

    - - (error: <internal>.Error): void

      - #### Parameters

        - ##### error: <internal>.Error

        #### Returns void

### _final

- _final(callback: (error?: <internal>.Error) => void): void

- Inherited from Socket._final

  #### Parameters

  - ##### callback: (error?: <internal>.Error) => void

    - - (error?: <internal>.Error): void

      - #### Parameters

        - ##### Optional error: <internal>.Error

        #### Returns void

### _read

- _read(size: number): void

- Inherited from Socket._read

  #### Parameters

  - ##### size: number

  #### Returns void

### _write

- _write(chunk: any, encoding: BufferEncoding, callback: (error?: <internal>.Error) => void): void

- Inherited from Socket._write

  #### Parameters

  - ##### chunk: any

  - ##### encoding: BufferEncoding

  - ##### callback: (error?: <internal>.Error) => void

    - - (error?: <internal>.Error): void

      - #### Parameters

        - ##### Optional error: <internal>.Error

        #### Returns void

### Optional _writev

- _writev(chunks: { chunk: any; encoding: BufferEncoding }[], callback: (error?: <internal>.Error) => void): void

- Inherited from Socket._writev

  #### Parameters

  - ##### chunks: { chunk: any; encoding: BufferEncoding }[]

  - ##### callback: (error?: <internal>.Error) => void

    - - (error?: <internal>.Error): void

      - #### Parameters

        - ##### Optional error: <internal>.Error

        #### Returns void

### addListener

- addListener(event: string, listener: (...args: any[]) => void): TLSSocket
- addListener(event: "OCSPResponse", listener: (response: <internal>.Buffer) => void): TLSSocket
- addListener(event: "secureConnect", listener: () => void): TLSSocket
- addListener(event: "session", listener: (session: <internal>.Buffer) => void): TLSSocket
- addListener(event: "keylog", listener: (line: <internal>.Buffer) => void): TLSSocket

- Overrides Socket.addListener

  events.EventEmitter

  1. close
  2. connect
  3. data
  4. drain
  5. end
  6. error
  7. lookup
  8. timeout

  #### Parameters

  - ##### event: string

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.addListener

  #### Parameters

  - ##### event: "OCSPResponse"

  - ##### listener: (response: <internal>.Buffer) => void

    - - (response: <internal>.Buffer): void

      - #### Parameters

        - ##### response: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.addListener

  #### Parameters

  - ##### event: "secureConnect"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Overrides Socket.addListener

  #### Parameters

  - ##### event: "session"

  - ##### listener: (session: <internal>.Buffer) => void

    - - (session: <internal>.Buffer): void

      - #### Parameters

        - ##### session: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.addListener

  #### Parameters

  - ##### event: "keylog"

  - ##### listener: (line: <internal>.Buffer) => void

    - - (line: <internal>.Buffer): void

      - #### Parameters

        - ##### line: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

### address

- address(): {} | <internal>.AddressInfo

- Inherited from Socket.address

  Returns the bound `address`, the address `family` name and `port` of the socket as reported by the operating system:`{ port: 12346, family: 'IPv4', address: '127.0.0.1' }`

  since

    v0.1.90

  #### Returns {} | <internal>.AddressInfo

### connect

- connect(options: SocketConnectOpts, connectionListener?: () => void): TLSSocket
- connect(port: number, host: string, connectionListener?: () => void): TLSSocket
- connect(port: number, connectionListener?: () => void): TLSSocket
- connect(path: string, connectionListener?: () => void): TLSSocket

- Inherited from Socket.connect

  Initiate a connection on a given socket.

  Possible signatures:

  - `socket.connect(options[, connectListener])`
  - `socket.connect(path[, connectListener])` for `IPC` connections.
  - `socket.connect(port[, host][, connectListener])` for TCP connections.
  - Returns: `net.Socket` The socket itself.

  This function is asynchronous. When the connection is established, the `'connect'` event will be emitted. If there is a problem connecting, instead of a `'connect'` event, an `'error'` event will be emitted with the error passed to the `'error'` listener. The last parameter `connectListener`, if supplied, will be added as a listener for the `'connect'` event once.

  This function should only be used for reconnecting a socket after`'close'` has been emitted or otherwise it may lead to undefined behavior.

  #### Parameters

  - ##### options: SocketConnectOpts

  - ##### Optional connectionListener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.connect

  #### Parameters

  - ##### port: number

  - ##### host: string

  - ##### Optional connectionListener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.connect

  #### Parameters

  - ##### port: number

  - ##### Optional connectionListener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.connect

  #### Parameters

  - ##### path: string

  - ##### Optional connectionListener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

### cork

- cork(): void

- Inherited from Socket.cork

  #### Returns void

### destroy

- destroy(error?: <internal>.Error): TLSSocket

- Inherited from Socket.destroy

  Destroy the stream. Optionally emit an `'error'` event, and emit a `'close'`event (unless `emitClose` is set to `false`). After this call, the readable stream will release any internal resources and subsequent calls to `push()`will be ignored.

  Once `destroy()` has been called any further calls will be a no-op and no further errors except from `_destroy()` may be emitted as `'error'`.

  Implementors should not override this method, but instead implement `readable._destroy()`.

  since

    v8.0.0

  #### Parameters

  - ##### Optional error: <internal>.Error

    Error which will be passed as payload in `'error'` event

  #### Returns TLSSocket

### disableRenegotiation

- disableRenegotiation(): void

- Disables TLS renegotiation for this `TLSSocket` instance. Once called, attempts to renegotiate will trigger an `'error'` event on the `TLSSocket`.

  since

    v8.4.0

  #### Returns void

### emit

- emit(event: string | symbol, ...args: any[]): boolean
- emit(event: "OCSPResponse", response: <internal>.Buffer): boolean
- emit(event: "secureConnect"): boolean
- emit(event: "session", session: <internal>.Buffer): boolean
- emit(event: "keylog", line: <internal>.Buffer): boolean

- Overrides Socket.emit

  Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments to each.

  Returns `true` if the event had listeners, `false` otherwise.

      const EventEmitter = require('events');
      const myEmitter = new EventEmitter();

      // First listener
      myEmitter.on('event', function firstListener() {
        console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
        console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
        const parameters = args.join(', ');
        console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      //   [Function: firstListener],
      //   [Function: secondListener],
      //   [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener

  #### Parameters

  - ##### event: string | symbol

  - ##### Rest ...args: any[]

  #### Returns boolean

- Overrides Socket.emit

  #### Parameters

  - ##### event: "OCSPResponse"

  - ##### response: <internal>.Buffer

  #### Returns boolean

- Overrides Socket.emit

  #### Parameters

  - ##### event: "secureConnect"

  #### Returns boolean

- Overrides Socket.emit

  #### Parameters

  - ##### event: "session"

  - ##### session: <internal>.Buffer

  #### Returns boolean

- Overrides Socket.emit

  #### Parameters

  - ##### event: "keylog"

  - ##### line: <internal>.Buffer

  #### Returns boolean

### enableTrace

- enableTrace(): void

- When enabled, TLS packet trace information is written to `stderr`. This can be used to debug TLS connection problems.

  Note: The format of the output is identical to the output of `openssl s_client -trace` or `openssl s_server -trace`. While it is produced by OpenSSL's`SSL_trace()` function, the format is undocumented, can change without notice, and should not be relied on.

  since

    v12.2.0

  #### Returns void

### end

- end(callback?: () => void): TLSSocket
- end(buffer: string | Uint8Array, callback?: () => void): TLSSocket
- end(str: string | Uint8Array, encoding?: BufferEncoding, callback?: () => void): TLSSocket

- Inherited from Socket.end

  Half-closes the socket. i.e., it sends a FIN packet. It is possible the server will still send some data.

  See `writable.end()` for further details.

  since

    v0.1.90

  #### Parameters

  - ##### Optional callback: () => void

    Optional callback for when the socket is finished.

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

  The socket itself.

- Inherited from Socket.end

  #### Parameters

  - ##### buffer: string | Uint8Array

  - ##### Optional callback: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.end

  #### Parameters

  - ##### str: string | Uint8Array

  - ##### Optional encoding: BufferEncoding

  - ##### Optional callback: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

### eventNames

- eventNames(): (string | symbol)[]

- Inherited from Socket.eventNames

  Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or `Symbol`s.

      const EventEmitter = require('events');
      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ]

  since

    v6.0.0

  #### Returns (string | symbol)[]

### exportKeyingMaterial

- exportKeyingMaterial(length: number, label: string, context: <internal>.Buffer): <internal>.Buffer

- Keying material is used for validations to prevent different kind of attacks in network protocols, for example in the specifications of IEEE 802.1X.

  Example

      const keyingMaterial = tlsSocket.exportKeyingMaterial(
        128,
        'client finished');

       Example return value of keyingMaterial:
       <Buffer 76 26 af 99 c5 56 8e 42 09 91 ef 9f 93 cb ad 6c 7b 65 f8 53 f1 d8 d9
          12 5a 33 b8 b5 25 df 7b 37 9f e0 e2 4f b8 67 83 a3 2f cd 5d 41 42 4c 91
          74 ef 2c ... 78 more bytes>

  See the OpenSSL `SSL_export_keying_material` documentation for more information.

  since

    v13.10.0, v12.17.0

  #### Parameters

  - ##### length: number

    number of bytes to retrieve from keying material

  - ##### label: string

    an application specific label, typically this will be a value from the IANA Exporter Label Registry.

  - ##### context: <internal>.Buffer

    Optionally provide a context.

  #### Returns <internal>.Buffer

  requested bytes of the keying material

### getCertificate

- getCertificate(): object | PeerCertificate

- Returns an object representing the local certificate. The returned object has some properties corresponding to the fields of the certificate.

  See TLSSocket.getPeerCertificate for an example of the certificate structure.

  If there is no local certificate, an empty object will be returned. If the socket has been destroyed, `null` will be returned.

  since

    v11.2.0

  #### Returns object | PeerCertificate

### getCipher

- getCipher(): CipherNameAndProtocol

- Returns an object containing information on the negotiated cipher suite.

  For example:

      {
          "name": "AES128-SHA256",
          "standardName": "TLS_RSA_WITH_AES_128_CBC_SHA256",
          "version": "TLSv1.2"
      }

  See SSL_CIPHER_get_name for more information.

  since

    v0.11.4

  #### Returns CipherNameAndProtocol

### getEphemeralKeyInfo

- getEphemeralKeyInfo(): object | EphemeralKeyInfo

- Returns an object representing the type, name, and size of parameter of an ephemeral key exchange in `perfect forward secrecy` on a client connection. It returns an empty object when the key exchange is not ephemeral. As this is only supported on a client socket; `null` is returned if called on a server socket. The supported types are `'DH'` and `'ECDH'`. The`name` property is available only when type is `'ECDH'`.

  For example: `{ type: 'ECDH', name: 'prime256v1', size: 256 }`.

  since

    v5.0.0

  #### Returns object | EphemeralKeyInfo

### getFinished

- getFinished(): <internal>.Buffer

- As the `Finished` messages are message digests of the complete handshake (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can be used for external authentication procedures when the authentication provided by SSL/TLS is not desired or is not enough.

  Corresponds to the `SSL_get_finished` routine in OpenSSL and may be used to implement the `tls-unique` channel binding from RFC 5929.

  since

    v9.9.0

  #### Returns <internal>.Buffer

  The latest `Finished` message that has been sent to the socket as part of a SSL/TLS handshake, or `undefined` if no `Finished` message has been sent yet.

### getMaxListeners

- getMaxListeners(): number

- Inherited from Socket.getMaxListeners

  Returns the current max listener value for the `EventEmitter` which is either set by `emitter.setMaxListeners(n)` or defaults to defaultMaxListeners.

  since

    v1.0.0

  #### Returns number

### getPeerCertificate

- getPeerCertificate(detailed: true): DetailedPeerCertificate
- getPeerCertificate(detailed?: false): PeerCertificate
- getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate

- Returns an object representing the peer's certificate. If the peer does not provide a certificate, an empty object will be returned. If the socket has been destroyed, `null` will be returned.

  If the full certificate chain was requested, each certificate will include an`issuerCertificate` property containing an object representing its issuer's certificate.

  since

    v0.11.4

  #### Parameters

  - ##### detailed: true

    Include the full certificate chain if `true`, otherwise include just the peer's certificate.

  #### Returns DetailedPeerCertificate

  A certificate object.

- #### Parameters

  - ##### Optional detailed: false

  #### Returns PeerCertificate

- #### Parameters

  - ##### Optional detailed: boolean

  #### Returns PeerCertificate | DetailedPeerCertificate

### getPeerFinished

- getPeerFinished(): <internal>.Buffer

- As the `Finished` messages are message digests of the complete handshake (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can be used for external authentication procedures when the authentication provided by SSL/TLS is not desired or is not enough.

  Corresponds to the `SSL_get_peer_finished` routine in OpenSSL and may be used to implement the `tls-unique` channel binding from RFC 5929.

  since

    v9.9.0

  #### Returns <internal>.Buffer

  The latest `Finished` message that is expected or has actually been received from the socket as part of a SSL/TLS handshake, or `undefined` if there is no `Finished` message so far.

### getPeerX509Certificate

- getPeerX509Certificate(): X509Certificate

- Returns the peer certificate as an `X509Certificate` object.

  If there is no peer certificate, or the socket has been destroyed,`undefined` will be returned.

  since

    v15.9.0

  #### Returns X509Certificate

### getProtocol

- getProtocol(): string

- Returns a string containing the negotiated SSL/TLS protocol version of the current connection. The value `'unknown'` will be returned for connected sockets that have not completed the handshaking process. The value `null` will be returned for server sockets or disconnected client sockets.

  Protocol versions are:

  - `'SSLv3'`
  - `'TLSv1'`
  - `'TLSv1.1'`
  - `'TLSv1.2'`
  - `'TLSv1.3'`

  See the OpenSSL `SSL_get_version` documentation for more information.

  since

    v5.7.0

  #### Returns string

### getSession

- getSession(): <internal>.Buffer

- Returns the TLS session data or `undefined` if no session was negotiated. On the client, the data can be provided to the `session` option of connect to resume the connection. On the server, it may be useful for debugging.

  See `Session Resumption` for more information.

  Note: `getSession()` works only for TLSv1.2 and below. For TLSv1.3, applications must use the `'session'` event (it also works for TLSv1.2 and below).

  since

    v0.11.4

  #### Returns <internal>.Buffer

### getSharedSigalgs

- getSharedSigalgs(): string[]

- See SSL_get_shared_sigalgs for more information.

  since

    v12.11.0

  #### Returns string[]

  List of signature algorithms shared between the server and the client in the order of decreasing preference.

### getTLSTicket

- getTLSTicket(): <internal>.Buffer

- For a client, returns the TLS session ticket if one is available, or`undefined`. For a server, always returns `undefined`.

  It may be useful for debugging.

  See `Session Resumption` for more information.

  since

    v0.11.4

  #### Returns <internal>.Buffer

### getX509Certificate

- getX509Certificate(): X509Certificate

- Returns the local certificate as an `X509Certificate` object.

  If there is no local certificate, or the socket has been destroyed,`undefined` will be returned.

  since

    v15.9.0

  #### Returns X509Certificate

### isPaused

- isPaused(): boolean

- Inherited from Socket.isPaused

  The `readable.isPaused()` method returns the current operating state of the`Readable`. This is used primarily by the mechanism that underlies the`readable.pipe()` method. In most typical cases, there will be no reason to use this method directly.

      const readable = new stream.Readable();

      readable.isPaused(); // === false
      readable.pause();
      readable.isPaused(); // === true
      readable.resume();
      readable.isPaused(); // === false

  since

    v0.11.14

  #### Returns boolean

### isSessionReused

- isSessionReused(): boolean

- See `Session Resumption` for more information.

  since

    v0.5.6

  #### Returns boolean

  `true` if the session was reused, `false` otherwise.

### listenerCount

- listenerCount(eventName: string | symbol): number

- Inherited from Socket.listenerCount

  Returns the number of listeners listening to the event named `eventName`.

  since

    v3.2.0

  #### Parameters

  - ##### eventName: string | symbol

    The name of the event being listened for

  #### Returns number

### listeners

- listeners(eventName: string | symbol): Function[]

- Inherited from Socket.listeners

  Returns a copy of the array of listeners for the event named `eventName`.

      server.on('connection', (stream) => {
        console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ]

  since

    v0.1.26

  #### Parameters

  - ##### eventName: string | symbol

  #### Returns Function[]

### off

- off(eventName: string | symbol, listener: (...args: any[]) => void): TLSSocket

- Inherited from Socket.off

  Alias for `emitter.removeListener()`.

  since

    v10.0.0

  #### Parameters

  - ##### eventName: string | symbol

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns TLSSocket

### on

- on(event: string, listener: (...args: any[]) => void): TLSSocket
- on(event: "OCSPResponse", listener: (response: <internal>.Buffer) => void): TLSSocket
- on(event: "secureConnect", listener: () => void): TLSSocket
- on(event: "session", listener: (session: <internal>.Buffer) => void): TLSSocket
- on(event: "keylog", listener: (line: <internal>.Buffer) => void): TLSSocket

- Overrides Socket.on

  Adds the `listener` function to the end of the listeners array for the event named `eventName`. No checks are made to see if the `listener` has already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple times.

      server.on('connection', (stream) => {
        console.log('someone connected!');
      });

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  By default, event listeners are invoked in the order they are added. The`emitter.prependListener()` method can be used as an alternative to add the event listener to the beginning of the listeners array.

      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      //   b
      //   a

  #### Parameters

  - ##### event: string

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.on

  #### Parameters

  - ##### event: "OCSPResponse"

  - ##### listener: (response: <internal>.Buffer) => void

    - - (response: <internal>.Buffer): void

      - #### Parameters

        - ##### response: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.on

  #### Parameters

  - ##### event: "secureConnect"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Overrides Socket.on

  #### Parameters

  - ##### event: "session"

  - ##### listener: (session: <internal>.Buffer) => void

    - - (session: <internal>.Buffer): void

      - #### Parameters

        - ##### session: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.on

  #### Parameters

  - ##### event: "keylog"

  - ##### listener: (line: <internal>.Buffer) => void

    - - (line: <internal>.Buffer): void

      - #### Parameters

        - ##### line: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

### once

- once(event: string, listener: (...args: any[]) => void): TLSSocket
- once(event: "OCSPResponse", listener: (response: <internal>.Buffer) => void): TLSSocket
- once(event: "secureConnect", listener: () => void): TLSSocket
- once(event: "session", listener: (session: <internal>.Buffer) => void): TLSSocket
- once(event: "keylog", listener: (line: <internal>.Buffer) => void): TLSSocket

- Overrides Socket.once

  Adds a one-time `listener` function for the event named `eventName`. The next time `eventName` is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
        console.log('Ah, we have our first user!');
      });

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  By default, event listeners are invoked in the order they are added. The`emitter.prependOnceListener()` method can be used as an alternative to add the event listener to the beginning of the listeners array.

      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      //   b
      //   a

  #### Parameters

  - ##### event: string

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.once

  #### Parameters

  - ##### event: "OCSPResponse"

  - ##### listener: (response: <internal>.Buffer) => void

    - - (response: <internal>.Buffer): void

      - #### Parameters

        - ##### response: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.once

  #### Parameters

  - ##### event: "secureConnect"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Overrides Socket.once

  #### Parameters

  - ##### event: "session"

  - ##### listener: (session: <internal>.Buffer) => void

    - - (session: <internal>.Buffer): void

      - #### Parameters

        - ##### session: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.once

  #### Parameters

  - ##### event: "keylog"

  - ##### listener: (line: <internal>.Buffer) => void

    - - (line: <internal>.Buffer): void

      - #### Parameters

        - ##### line: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

### pause

- pause(): TLSSocket

- Inherited from Socket.pause

  Pauses the reading of data. That is, `'data'` events will not be emitted. Useful to throttle back an upload.

  #### Returns TLSSocket

  The socket itself.

### pipe

- pipe<T>(destination: T, options?: { end?: boolean }): T

- Inherited from Socket.pipe

  #### Type parameters

  - #### T: WritableStream<T>

  #### Parameters

  - ##### destination: T

  - ##### Optional options: { end?: boolean }

    - ##### Optional end?: boolean

  #### Returns T

### prependListener

- prependListener(event: string, listener: (...args: any[]) => void): TLSSocket
- prependListener(event: "OCSPResponse", listener: (response: <internal>.Buffer) => void): TLSSocket
- prependListener(event: "secureConnect", listener: () => void): TLSSocket
- prependListener(event: "session", listener: (session: <internal>.Buffer) => void): TLSSocket
- prependListener(event: "keylog", listener: (line: <internal>.Buffer) => void): TLSSocket

- Overrides Socket.prependListener

  Adds the `listener` function to the beginning of the listeners array for the event named `eventName`. No checks are made to see if the `listener` has already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple times.

      server.prependListener('connection', (stream) => {
        console.log('someone connected!');
      });

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  #### Parameters

  - ##### event: string

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.prependListener

  #### Parameters

  - ##### event: "OCSPResponse"

  - ##### listener: (response: <internal>.Buffer) => void

    - - (response: <internal>.Buffer): void

      - #### Parameters

        - ##### response: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.prependListener

  #### Parameters

  - ##### event: "secureConnect"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Overrides Socket.prependListener

  #### Parameters

  - ##### event: "session"

  - ##### listener: (session: <internal>.Buffer) => void

    - - (session: <internal>.Buffer): void

      - #### Parameters

        - ##### session: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.prependListener

  #### Parameters

  - ##### event: "keylog"

  - ##### listener: (line: <internal>.Buffer) => void

    - - (line: <internal>.Buffer): void

      - #### Parameters

        - ##### line: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

### prependOnceListener

- prependOnceListener(event: string, listener: (...args: any[]) => void): TLSSocket
- prependOnceListener(event: "OCSPResponse", listener: (response: <internal>.Buffer) => void): TLSSocket
- prependOnceListener(event: "secureConnect", listener: () => void): TLSSocket
- prependOnceListener(event: "session", listener: (session: <internal>.Buffer) => void): TLSSocket
- prependOnceListener(event: "keylog", listener: (line: <internal>.Buffer) => void): TLSSocket

- Overrides Socket.prependOnceListener

  Adds a one-time `listener` function for the event named `eventName` to the_beginning_ of the listeners array. The next time `eventName` is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
        console.log('Ah, we have our first user!');
      });

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  #### Parameters

  - ##### event: string

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.prependOnceListener

  #### Parameters

  - ##### event: "OCSPResponse"

  - ##### listener: (response: <internal>.Buffer) => void

    - - (response: <internal>.Buffer): void

      - #### Parameters

        - ##### response: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.prependOnceListener

  #### Parameters

  - ##### event: "secureConnect"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Overrides Socket.prependOnceListener

  #### Parameters

  - ##### event: "session"

  - ##### listener: (session: <internal>.Buffer) => void

    - - (session: <internal>.Buffer): void

      - #### Parameters

        - ##### session: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

- Overrides Socket.prependOnceListener

  #### Parameters

  - ##### event: "keylog"

  - ##### listener: (line: <internal>.Buffer) => void

    - - (line: <internal>.Buffer): void

      - #### Parameters

        - ##### line: <internal>.Buffer

        #### Returns void

  #### Returns TLSSocket

### push

- push(chunk: any, encoding?: BufferEncoding): boolean

- Inherited from Socket.push

  #### Parameters

  - ##### chunk: any

  - ##### Optional encoding: BufferEncoding

  #### Returns boolean

### rawListeners

- rawListeners(eventName: string | symbol): Function[]

- Inherited from Socket.rawListeners

  Returns a copy of the array of listeners for the event named `eventName`, including any wrappers (such as those created by `.once()`).

      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log');

  since

    v9.4.0

  #### Parameters

  - ##### eventName: string | symbol

  #### Returns Function[]

### read

- read(size?: number): any

- Inherited from Socket.read

  The `readable.read()` method pulls some data out of the internal buffer and returns it. If no data available to be read, `null` is returned. By default, the data will be returned as a `Buffer` object unless an encoding has been specified using the `readable.setEncoding()` method or the stream is operating in object mode.

  The optional `size` argument specifies a specific number of bytes to read. If`size` bytes are not available to be read, `null` will be returned _unless_the stream has ended, in which case all of the data remaining in the internal buffer will be returned.

  If the `size` argument is not specified, all of the data contained in the internal buffer will be returned.

  The `size` argument must be less than or equal to 1 GiB.

  The `readable.read()` method should only be called on `Readable` streams operating in paused mode. In flowing mode, `readable.read()` is called automatically until the internal buffer is fully drained.

      const readable = getReadableStreamSomehow();

      // 'readable' may be triggered multiple times as data is buffered in
      readable.on('readable', () => {
        let chunk;
        console.log('Stream is readable (new data received in buffer)');
        // Use a loop to make sure we read all currently available data
        while (null !== (chunk = readable.read())) {
          console.log(`Read ${chunk.length} bytes of data...`);
        }
      });

      // 'end' will be triggered once when there is no more data available
      readable.on('end', () => {
        console.log('Reached end of stream.');
      });

  Each call to `readable.read()` returns a chunk of data, or `null`. The chunks are not concatenated. A `while` loop is necessary to consume all data currently in the buffer. When reading a large file `.read()` may return `null`, having consumed all buffered content so far, but there is still more data to come not yet buffered. In this case a new `'readable'` event will be emitted when there is more data in the buffer. Finally the `'end'` event will be emitted when there is no more data to come.

  Therefore to read a file's whole contents from a `readable`, it is necessary to collect chunks across multiple `'readable'` events:

      const chunks = [];

      readable.on('readable', () => {
        let chunk;
        while (null !== (chunk = readable.read())) {
          chunks.push(chunk);
        }
      });

      readable.on('end', () => {
        const content = chunks.join('');
      });

  A `Readable` stream in object mode will always return a single item from a call to `readable.read(size)`, regardless of the value of the`size` argument.

  If the `readable.read()` method returns a chunk of data, a `'data'` event will also be emitted.

  Calling read after the `'end'` event has been emitted will return `null`. No runtime error will be raised.

  since

    v0.9.4

  #### Parameters

  - ##### Optional size: number

    Optional argument to specify how much data to read.

  #### Returns any

### ref

- ref(): TLSSocket

- Inherited from Socket.ref

  Opposite of `unref()`, calling `ref()` on a previously `unref`ed socket will_not_ let the program exit if it's the only socket left (the default behavior). If the socket is `ref`ed calling `ref` again will have no effect.

  since

    v0.9.1

  #### Returns TLSSocket

  The socket itself.

### removeAllListeners

- removeAllListeners(event?: string | symbol): TLSSocket

- Inherited from Socket.removeAllListeners

  Removes all listeners, or those of the specified `eventName`.

  It is bad practice to remove listeners added elsewhere in the code, particularly when the `EventEmitter` instance was created by some other component or module (e.g. sockets or file streams).

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  since

    v0.1.26

  #### Parameters

  - ##### Optional event: string | symbol

  #### Returns TLSSocket

### removeListener

- removeListener(event: "close", listener: () => void): TLSSocket
- removeListener(event: "data", listener: (chunk: any) => void): TLSSocket
- removeListener(event: "end", listener: () => void): TLSSocket
- removeListener(event: "error", listener: (err: <internal>.Error) => void): TLSSocket
- removeListener(event: "pause", listener: () => void): TLSSocket
- removeListener(event: "readable", listener: () => void): TLSSocket
- removeListener(event: "resume", listener: () => void): TLSSocket
- removeListener(event: string | symbol, listener: (...args: any[]) => void): TLSSocket

- Inherited from Socket.removeListener

  Removes the specified `listener` from the listener array for the event named`eventName`.

      const callback = (stream) => {
        console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);

  `removeListener()` will remove, at most, one instance of a listener from the listener array. If any single listener has been added multiple times to the listener array for the specified `eventName`, then `removeListener()` must be called multiple times to remove each instance.

  Once an event is emitted, all listeners attached to it at the time of emitting are called in order. This implies that any`removeListener()` or `removeAllListeners()` calls after emitting and_before_ the last listener finishes execution will not remove them from`emit()` in progress. Subsequent events behave as expected.

      const myEmitter = new MyEmitter();

      const callbackA = () => {
        console.log('A');
        myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
        console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      //   A
      //   B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      //   A

  Because listeners are managed using an internal array, calling this will change the position indices of any listener registered after the listener being removed. This will not impact the order in which listeners are called, but it means that any copies of the listener array as returned by the `emitter.listeners()` method will need to be recreated.

  When a single function has been added as a handler multiple times for a single event (as in the example below), `removeListener()` will remove the most recently added instance. In the example the `once('ping')`listener is removed:

      const ee = new EventEmitter();

      function pong() {
        console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping');

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  #### Parameters

  - ##### event: "close"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.removeListener

  #### Parameters

  - ##### event: "data"

  - ##### listener: (chunk: any) => void

    - - (chunk: any): void

      - #### Parameters

        - ##### chunk: any

        #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.removeListener

  #### Parameters

  - ##### event: "end"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.removeListener

  #### Parameters

  - ##### event: "error"

  - ##### listener: (err: <internal>.Error) => void

    - - (err: <internal>.Error): void

      - #### Parameters

        - ##### err: <internal>.Error

        #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.removeListener

  #### Parameters

  - ##### event: "pause"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.removeListener

  #### Parameters

  - ##### event: "readable"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.removeListener

  #### Parameters

  - ##### event: "resume"

  - ##### listener: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

- Inherited from Socket.removeListener

  #### Parameters

  - ##### event: string | symbol

  - ##### listener: (...args: any[]) => void

    - - (...args: any[]): void

      - #### Parameters

        - ##### Rest ...args: any[]

        #### Returns void

  #### Returns TLSSocket

### renegotiate

- renegotiate(options: { rejectUnauthorized?: boolean; requestCert?: boolean }, callback: (err: <internal>.Error) => void): boolean

- The `tlsSocket.renegotiate()` method initiates a TLS renegotiation process. Upon completion, the `callback` function will be passed a single argument that is either an `Error` (if the request failed) or `null`.

  This method can be used to request a peer's certificate after the secure connection has been established.

  When running as the server, the socket will be destroyed with an error after`handshakeTimeout` timeout.

  For TLSv1.3, renegotiation cannot be initiated, it is not supported by the protocol.

  since

    v0.11.8

  #### Parameters

  - ##### options: { rejectUnauthorized?: boolean; requestCert?: boolean }

    - ##### Optional rejectUnauthorized?: boolean

    - ##### Optional requestCert?: boolean

  - ##### callback: (err: <internal>.Error) => void

    If `renegotiate()` returned `true`, callback is attached once to the `'secure'` event. If `renegotiate()` returned `false`, `callback` will be called in the next tick with an error, unless the `tlsSocket` has been destroyed, in which case `callback` will not be called at all.

    - - (err: <internal>.Error): void

      - #### Parameters

        - ##### err: <internal>.Error

        #### Returns void

  #### Returns boolean

  `true` if renegotiation was initiated, `false` otherwise.

### resume

- resume(): TLSSocket

- Inherited from Socket.resume

  Resumes reading after a call to `socket.pause()`.

  #### Returns TLSSocket

  The socket itself.

### setDefaultEncoding

- setDefaultEncoding(encoding: BufferEncoding): TLSSocket

- Inherited from Socket.setDefaultEncoding

  #### Parameters

  - ##### encoding: BufferEncoding

  #### Returns TLSSocket

### setEncoding

- setEncoding(encoding?: BufferEncoding): TLSSocket

- Inherited from Socket.setEncoding

  Set the encoding for the socket as a `Readable Stream`. See `readable.setEncoding()` for more information.

  since

    v0.1.90

  #### Parameters

  - ##### Optional encoding: BufferEncoding

  #### Returns TLSSocket

  The socket itself.

### setKeepAlive

- setKeepAlive(enable?: boolean, initialDelay?: number): TLSSocket

- Inherited from Socket.setKeepAlive

  Enable/disable keep-alive functionality, and optionally set the initial delay before the first keepalive probe is sent on an idle socket.

  Set `initialDelay` (in milliseconds) to set the delay between the last data packet received and the first keepalive probe. Setting `0` for`initialDelay` will leave the value unchanged from the default (or previous) setting.

  Enabling the keep-alive functionality will set the following socket options:

  - `SO_KEEPALIVE=1`
  - `TCP_KEEPIDLE=initialDelay`
  - `TCP_KEEPCNT=10`
  - `TCP_KEEPINTVL=1`
  since

    v0.1.92

  #### Parameters

  - ##### Optional enable: boolean

  - ##### Optional initialDelay: number

  #### Returns TLSSocket

  The socket itself.

### setMaxListeners

- setMaxListeners(n: number): TLSSocket

- Inherited from Socket.setMaxListeners

  By default `EventEmitter`s will print a warning if more than `10` listeners are added for a particular event. This is a useful default that helps finding memory leaks. The `emitter.setMaxListeners()` method allows the limit to be modified for this specific `EventEmitter` instance. The value can be set to`Infinity` (or `0`) to indicate an unlimited number of listeners.

  Returns a reference to the `EventEmitter`, so that calls can be chained.

  since

    v0.3.5

  #### Parameters

  - ##### n: number

  #### Returns TLSSocket

### setMaxSendFragment

- setMaxSendFragment(size: number): boolean

- The `tlsSocket.setMaxSendFragment()` method sets the maximum TLS fragment size. Returns `true` if setting the limit succeeded; `false` otherwise.

  Smaller fragment sizes decrease the buffering latency on the client: larger fragments are buffered by the TLS layer until the entire fragment is received and its integrity is verified; large fragments can span multiple roundtrips and their processing can be delayed due to packet loss or reordering. However, smaller fragments add extra TLS framing bytes and CPU overhead, which may decrease overall server throughput.

  since

    v0.11.11

  #### Parameters

  - ##### size: number

  #### Returns boolean

### setNoDelay

- setNoDelay(noDelay?: boolean): TLSSocket

- Inherited from Socket.setNoDelay

  Enable/disable the use of Nagle's algorithm.

  When a TCP connection is created, it will have Nagle's algorithm enabled.

  Nagle's algorithm delays data before it is sent via the network. It attempts to optimize throughput at the expense of latency.

  Passing `true` for `noDelay` or not passing an argument will disable Nagle's algorithm for the socket. Passing `false` for `noDelay` will enable Nagle's algorithm.

  since

    v0.1.90

  #### Parameters

  - ##### Optional noDelay: boolean

  #### Returns TLSSocket

  The socket itself.

### setTimeout

- setTimeout(timeout: number, callback?: () => void): TLSSocket

- Inherited from Socket.setTimeout

  Sets the socket to timeout after `timeout` milliseconds of inactivity on the socket. By default `net.Socket` do not have a timeout.

  When an idle timeout is triggered the socket will receive a `'timeout'` event but the connection will not be severed. The user must manually call `socket.end()` or `socket.destroy()` to end the connection.

      socket.setTimeout(3000);
      socket.on('timeout', () => {
        console.log('socket timeout');
        socket.end();
      });

  If `timeout` is 0, then the existing idle timeout is disabled.

  The optional `callback` parameter will be added as a one-time listener for the `'timeout'` event.

  since

    v0.1.90

  #### Parameters

  - ##### timeout: number

  - ##### Optional callback: () => void

    - - (): void

      - #### Returns void

  #### Returns TLSSocket

  The socket itself.

### uncork

- uncork(): void

- Inherited from Socket.uncork

  #### Returns void

### unpipe

- unpipe(destination?: WritableStream): TLSSocket

- Inherited from Socket.unpipe

  The `readable.unpipe()` method detaches a `Writable` stream previously attached using the pipe method.

  If the `destination` is not specified, then all pipes are detached.

  If the `destination` is specified, but no pipe is set up for it, then the method does nothing.

      const fs = require('fs');
      const readable = getReadableStreamSomehow();
      const writable = fs.createWriteStream('file.txt');
      // All the data from readable goes into 'file.txt',
      // but only for the first second.
      readable.pipe(writable);
      setTimeout(() => {
        console.log('Stop writing to file.txt.');
        readable.unpipe(writable);
        console.log('Manually close the file stream.');
        writable.end();
      }, 1000);

  since

    v0.9.4

  #### Parameters

  - ##### Optional destination: WritableStream

    Optional specific stream to unpipe

  #### Returns TLSSocket

### unref

- unref(): TLSSocket

- Inherited from Socket.unref

  Calling `unref()` on a socket will allow the program to exit if this is the only active socket in the event system. If the socket is already `unref`ed calling`unref()` again will have no effect.

  since

    v0.9.1

  #### Returns TLSSocket

  The socket itself.

### unshift

- unshift(chunk: any, encoding?: BufferEncoding): void

- Inherited from Socket.unshift

  Passing `chunk` as `null` signals the end of the stream (EOF) and behaves the same as `readable.push(null)`, after which no more data can be written. The EOF signal is put at the end of the buffer and any buffered data will still be flushed.

  The `readable.unshift()` method pushes a chunk of data back into the internal buffer. This is useful in certain situations where a stream is being consumed by code that needs to "un-consume" some amount of data that it has optimistically pulled out of the source, so that the data can be passed on to some other party.

  The `stream.unshift(chunk)` method cannot be called after the `'end'` event has been emitted or a runtime error will be thrown.

  Developers using `stream.unshift()` often should consider switching to use of a `Transform` stream instead. See the `API for stream implementers` section for more information.

      // Pull off a header delimited by \n\n.
      // Use unshift() if we get too much.
      // Call the callback with (error, header, stream).
      const { StringDecoder } = require('string_decoder');
      function parseHeader(stream, callback) {
        stream.on('error', callback);
        stream.on('readable', onReadable);
        const decoder = new StringDecoder('utf8');
        let header = '';
        function onReadable() {
          let chunk;
          while (null !== (chunk = stream.read())) {
            const str = decoder.write(chunk);
            if (str.match(/\n\n/)) {
              // Found the header boundary.
              const split = str.split(/\n\n/);
              header += split.shift();
              const remaining = split.join('\n\n');
              const buf = Buffer.from(remaining, 'utf8');
              stream.removeListener('error', callback);
              // Remove the 'readable' listener before unshifting.
              stream.removeListener('readable', onReadable);
              if (buf.length)
                stream.unshift(buf);
              // Now the body of the message can be read from the stream.
              callback(null, header, stream);
            } else {
              // Still reading the header.
              header += str;
            }
          }
        }
      }

  Unlike push, `stream.unshift(chunk)` will not end the reading process by resetting the internal reading state of the stream. This can cause unexpected results if `readable.unshift()` is called during a read (i.e. from within a _read implementation on a custom stream). Following the call to `readable.unshift()` with an immediate push will reset the reading state appropriately, however it is best to simply avoid calling `readable.unshift()` while in the process of performing a read.

  since

    v0.9.11

  #### Parameters

  - ##### chunk: any

    Chunk of data to unshift onto the read queue. For streams not operating in object mode, `chunk` must be a string, `Buffer`, `Uint8Array` or `null`. For object mode streams, `chunk` may be any JavaScript value.

  - ##### Optional encoding: BufferEncoding

    Encoding of string chunks. Must be a valid `Buffer` encoding, such as `'utf8'` or `'ascii'`.

  #### Returns void

### wrap

- wrap(stream: ReadableStream): TLSSocket

- Inherited from Socket.wrap

  Prior to Node.js 0.10, streams did not implement the entire `stream` module API as it is currently defined. (See `Compatibility` for more information.)

  When using an older Node.js library that emits `'data'` events and has a pause method that is advisory only, the`readable.wrap()` method can be used to create a `Readable` stream that uses the old stream as its data source.

  It will rarely be necessary to use `readable.wrap()` but the method has been provided as a convenience for interacting with older Node.js applications and libraries.

      const { OldReader } = require('./old-api-module.js');
      const { Readable } = require('stream');
      const oreader = new OldReader();
      const myReader = new Readable().wrap(oreader);

      myReader.on('readable', () => {
        myReader.read(); // etc.
      });

  since

    v0.9.4

  #### Parameters

  - ##### stream: ReadableStream

    An "old style" readable stream

  #### Returns TLSSocket

### write

- write(buffer: string | Uint8Array, cb?: (err?: <internal>.Error) => void): boolean
- write(str: string | Uint8Array, encoding?: BufferEncoding, cb?: (err?: <internal>.Error) => void): boolean

- Inherited from Socket.write

  Sends data on the socket. The second parameter specifies the encoding in the case of a string. It defaults to UTF8 encoding.

  Returns `true` if the entire data was flushed successfully to the kernel buffer. Returns `false` if all or part of the data was queued in user memory.`'drain'` will be emitted when the buffer is again free.

  The optional `callback` parameter will be executed when the data is finally written out, which may not be immediately.

  See `Writable` stream `write()` method for more information.

  since

    v0.1.90

  #### Parameters

  - ##### buffer: string | Uint8Array

  - ##### Optional cb: (err?: <internal>.Error) => void

    - - (err?: <internal>.Error): void

      - #### Parameters

        - ##### Optional err: <internal>.Error

        #### Returns void

  #### Returns boolean

- Inherited from Socket.write

  #### Parameters

  - ##### str: string | Uint8Array

  - ##### Optional encoding: BufferEncoding

  - ##### Optional cb: (err?: <internal>.Error) => void

    - - (err?: <internal>.Error): void

      - #### Parameters

        - ##### Optional err: <internal>.Error

        #### Returns void

  #### Returns boolean

### Static from

- from(src: string | <internal>.Object | Promise<any> | ArrayBuffer | <internal>.Stream | Iterable<any> | AsyncIterable<any> | Blob | AsyncGeneratorFunction): <internal>.Duplex

- Inherited from Socket.from

  A utility method for creating duplex streams.

  - `Stream` converts writable stream into writable `Duplex` and readable stream to `Duplex`.
  - `Blob` converts into readable `Duplex`.
  - `string` converts into readable `Duplex`.
  - `ArrayBuffer` converts into readable `Duplex`.
  - `AsyncIterable` converts into a readable `Duplex`. Cannot yield `null`.
  - `AsyncGeneratorFunction` converts into a readable/writable transform `Duplex`. Must take a source `AsyncIterable` as first parameter. Cannot yield `null`.
  - `AsyncFunction` converts into a writable `Duplex`. Must return either `null` or `undefined`
  - `Object ({ writable, readable })` converts `readable` and `writable` into `Stream` and then combines them into `Duplex` where the `Duplex` will write to the `writable` and read from the `readable`.
  - `Promise` converts into readable `Duplex`. Value `null` is ignored.
  since

    v16.8.0

  #### Parameters

  - ##### src: string | <internal>.Object | Promise<any> | ArrayBuffer | <internal>.Stream | Iterable<any> | AsyncIterable<any> | Blob | AsyncGeneratorFunction

  #### Returns <internal>.Duplex

### Static getEventListeners

- getEventListeners(emitter: <internal>.EventEmitter | DOMEventTarget, name: string | symbol): Function[]

- Inherited from Socket.getEventListeners

  Returns a copy of the array of listeners for the event named `eventName`.

  For `EventEmitter`s this behaves exactly the same as calling `.listeners` on the emitter.

  For `EventTarget`s this is the only way to get the event listeners for the event target. This is useful for debugging and diagnostic purposes.

      const { getEventListeners, EventEmitter } = require('events');

      {
        const ee = new EventEmitter();
        const listener = () => console.log('Events are fun');
        ee.on('foo', listener);
        getEventListeners(ee, 'foo'); // [listener]
      }
      {
        const et = new EventTarget();
        const listener = () => console.log('Events are fun');
        et.addEventListener('foo', listener);
        getEventListeners(et, 'foo'); // [listener]
      }

  since

    v15.2.0

  #### Parameters

  - ##### emitter: <internal>.EventEmitter | DOMEventTarget

  - ##### name: string | symbol

  #### Returns Function[]

### Static isDisturbed

- isDisturbed(stream: <internal>.Readable | ReadableStream): boolean

- Inherited from Socket.isDisturbed

  Returns whether the stream has been read from or cancelled.

  since

    v16.8.0

  #### Parameters

  - ##### stream: <internal>.Readable | ReadableStream

  #### Returns boolean

### Static listenerCount

- listenerCount(emitter: <internal>.EventEmitter, eventName: string | symbol): number

- Inherited from Socket.listenerCount

  A class method that returns the number of listeners for the given `eventName`registered on the given `emitter`.

      const { EventEmitter, listenerCount } = require('events');
      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2

  since

    v0.9.12

  deprecated

    Since v3.2.0 - Use `listenerCount` instead.

  #### Parameters

  - ##### emitter: <internal>.EventEmitter

    The emitter to query

  - ##### eventName: string | symbol

    The event name

  #### Returns number

### Static on

- on(emitter: <internal>.EventEmitter, eventName: string, options?: StaticEventEmitterOptions): AsyncIterableIterator<any>

- Inherited from Socket.on

  ```js const { on, EventEmitter } = require('events');

  (async () => { const ee = new EventEmitter();

  // Emit later on process.nextTick(() => { ee.emit('foo', 'bar'); ee.emit('foo', 42); });

  for await (const event of on(ee, 'foo')) { // The execution of this inner block is synchronous and it // processes one event at a time (even with await). Do not use // if concurrent execution is required. console.log(event); // prints ['bar'] [42] } // Unreachable here })();

      Returns an `AsyncIterator` that iterates `eventName` events. It will throw
      if the `EventEmitter` emits `'error'`. It removes all listeners when
      exiting the loop. The `value` returned by each iteration is an array
      composed of the emitted event arguments.

      An `AbortSignal` can be used to cancel waiting on events:

      ```js
      const { on, EventEmitter } = require('events');
      const ac = new AbortController();

      (async () => {
        const ee = new EventEmitter();

        // Emit later on
        process.nextTick(() => {
          ee.emit('foo', 'bar');
          ee.emit('foo', 42);
        });

        for await (const event of on(ee, 'foo', { signal: ac.signal })) {
          // The execution of this inner block is synchronous and it
          // processes one event at a time (even with await). Do not use
          // if concurrent execution is required.
          console.log(event); // prints ['bar'] [42]
        }
        // Unreachable here
      })();

      process.nextTick(() => ac.abort());

  since

    v13.6.0, v12.16.0

  #### Parameters

  - ##### emitter: <internal>.EventEmitter

  - ##### eventName: string

    The name of the event being listened for

  - ##### Optional options: StaticEventEmitterOptions

  #### Returns AsyncIterableIterator<any>

  that iterates `eventName` events emitted by the `emitter`

### Static once

- once(emitter: NodeEventTarget, eventName: string | symbol, options?: StaticEventEmitterOptions): Promise<any[]>
- once(emitter: DOMEventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise<any[]>

- Inherited from Socket.once

  Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given event or that is rejected if the `EventEmitter` emits `'error'` while waiting. The `Promise` will resolve with an array of all the arguments emitted to the given event.

  This method is intentionally generic and works with the web platform EventTarget interface, which has no special`'error'` event semantics and does not listen to the `'error'` event.

      const { once, EventEmitter } = require('events');

      async function run() {
        const ee = new EventEmitter();

        process.nextTick(() => {
          ee.emit('myevent', 42);
        });

        const [value] = await once(ee, 'myevent');
        console.log(value);

        const err = new Error('kaboom');
        process.nextTick(() => {
          ee.emit('error', err);
        });

        try {
          await once(ee, 'myevent');
        } catch (err) {
          console.log('error happened', err);
        }
      }

      run();

  The special handling of the `'error'` event is only used when `events.once()`is used to wait for another event. If `events.once()` is used to wait for the '`error'` event itself, then it is treated as any other kind of event without special handling:

      const { EventEmitter, once } = require('events');

      const ee = new EventEmitter();

      once(ee, 'error')
        .then(([err]) => console.log('ok', err.message))
        .catch((err) => console.log('error', err.message));

      ee.emit('error', new Error('boom'));

      // Prints: ok boom

  An `AbortSignal` can be used to cancel waiting for the event:

      const { EventEmitter, once } = require('events');

      const ee = new EventEmitter();
      const ac = new AbortController();

      async function foo(emitter, event, signal) {
        try {
          await once(emitter, event, { signal });
          console.log('event emitted!');
        } catch (error) {
          if (error.name === 'AbortError') {
            console.error('Waiting for the event was canceled!');
          } else {
            console.error('There was an error', error.message);
          }
        }
      }

      foo(ee, 'foo', ac.signal);
      ac.abort(); // Abort waiting for the event
      ee.emit('foo'); // Prints: Waiting for the event was canceled!

  since

    v11.13.0, v10.16.0

  #### Parameters

  - ##### emitter: NodeEventTarget

  - ##### eventName: string | symbol

  - ##### Optional options: StaticEventEmitterOptions

  #### Returns Promise<any[]>

- Inherited from Socket.once

  #### Parameters

  - ##### emitter: DOMEventTarget

  - ##### eventName: string

  - ##### Optional options: StaticEventEmitterOptions

  #### Returns Promise<any[]>

Generated using TypeDoc