---
agentTools:
  projectIndex: https://docs.rainway.com/llms.txt
---

# Node.js SDK

[Home](https://docs.rainway.com/reference/about) > [@rainway/native](nodejs-sdk)

## native package

## Classes

| Class                                                         | Description                                                                                                                                                                                    |
| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [BaseEvent](./nodejs-sdk-baseevent)                           | The base event type.                                                                                                                                                                           |
| [BaseRequestEvent](./nodejs-sdk-baserequestevent)             | The base request event type.                                                                                                                                                                   |
| [CloseEvent\_2](./nodejs-sdk-closeevent-2)                    | An event that occurs when something is closed.                                                                                                                                                 |
| [DataChannel](./nodejs-sdk-datachannel)                       | A data channel from our device to another Peer on the Rainway Network.                                                                                                                         |
| [DataChannelEvent](./nodejs-sdk-datachannelevent)             | An event that occurs when a [DataChannel](./nodejs-sdk-datachannel) is created.                                                                                                                |
| [EventEmitter](./nodejs-sdk-eventemitter)                     | Event emitter                                                                                                                                                                                  |
| [GamepadReport](./nodejs-sdk-gamepadreport)                   | An input report describing gamepad input.                                                                                                                                                      |
| [GamepadRumble](./nodejs-sdk-gamepadrumble)                   | An input report describing gamepad rumble.                                                                                                                                                     |
| [InputBody](./nodejs-sdk-inputbody)                           | The body of an input event.                                                                                                                                                                    |
| [InputEvent\_2](./nodejs-sdk-inputevent-2)                    | An event that occurs when input arrives for a given [OutboundStream](./nodejs-sdk-outboundstream). Can be used to prevent input event processing, preventing the host from handling the input. |
| [KeyboardInput](./nodejs-sdk-keyboardinput)                   | An input report describing keyboard input.                                                                                                                                                     |
| [LogBody](./nodejs-sdk-logbody)                               | The body of a log.                                                                                                                                                                             |
| [LogEvent](./nodejs-sdk-logevent)                             | An event that occurs when the [RainwaySDK](./nodejs-sdk-rainwaysdk) logs data.                                                                                                                 |
| [LogicalInput](./nodejs-sdk-logicalinput)                     | An input report describing logical input.                                                                                                                                                      |
| [MessageEventRequest](./nodejs-sdk-messageeventrequest)       | An event that occurs when a [DataChannel](./nodejs-sdk-datachannel) gets a message that expects a response.                                                                                    |
| [MessageEventStandalone](./nodejs-sdk-messageeventstandalone) | An event that occurs when a [DataChannel](./nodejs-sdk-datachannel) gets a message that does not expect a response.                                                                            |
| [MouseAbsolute](./nodejs-sdk-mouseabsolute)                   | An input report describing absolute mouse position input.                                                                                                                                      |
| [MouseClick](./nodejs-sdk-mouseclick)                         | An input report describing mouse click input.                                                                                                                                                  |
| [MouseRelative](./nodejs-sdk-mouserelative)                   | An input report describing relative mouse position input.                                                                                                                                      |
| [MouseScroll](./nodejs-sdk-mousescroll)                       | An input report describing mouse scroll input.                                                                                                                                                 |
| [OutboundStream](./nodejs-sdk-outboundstream)                 | An outbound stream from our device to another Peer on the Rainway Network.                                                                                                                     |
| [Peer](./nodejs-sdk-peer)                                     | An object representing a connection to a remote Rainway peer.                                                                                                                                  |
| [PeerJoinEvent](./nodejs-sdk-peerjoinevent)                   | An event that occurs when a [Peer](./nodejs-sdk-peer) joins a [OutboundStream](./nodejs-sdk-outboundstream).                                                                                   |
| [PeerLeaveEvent](./nodejs-sdk-peerleaveevent)                 | An event that occurs when a [Peer](./nodejs-sdk-peer) leaves a [OutboundStream](./nodejs-sdk-outboundstream).                                                                                  |
| [PeerRequestEvent](./nodejs-sdk-peerrequestevent)             | An event that occurs when a remote peer requests to connect.                                                                                                                                   |
| [PeerStateChangeEvent](./nodejs-sdk-peerstatechangeevent)     | An event that occurs when a [Peer](./nodejs-sdk-peer) changes [RainwayPeerState](./nodejs-sdk-rainwaypeerstate).                                                                               |
| [PenAbsolute](./nodejs-sdk-penabsolute)                       | An input report describing absolute positioned pen input.                                                                                                                                      |
| [PointerInfo](./nodejs-sdk-pointerinfo)                       | Information about a pointer.                                                                                                                                                                   |
| [RainwayConnection](./nodejs-sdk-rainwayconnection)           | A connection to the Rainway network over which peer connection requests are transmitted.                                                                                                       |
| [RainwaySDK](./nodejs-sdk-rainwaysdk)                         | The Rainway SDK                                                                                                                                                                                |
| [SetClipboardText](./nodejs-sdk-setclipboardtext)             | An input report describing clipboard text changes.                                                                                                                                             |
| [StreamRequestEvent](./nodejs-sdk-streamrequestevent)         | An event that occurs when a remote peer requests an [OutboundStream](./nodejs-sdk-outboundstream).                                                                                             |
| [Touch\_2](./nodejs-sdk-touch-2)                              | Information about touch.                                                                                                                                                                       |
| [TouchesAbsolute](./nodejs-sdk-touchesabsolute)               | An input report describing absolute positioned touch input.                                                                                                                                    |
| [ViewportResize](./nodejs-sdk-viewportresize)                 | An input report describing viewport resize changes.                                                                                                                                            |

## Enumerations

| Enumeration                                                         | Description                                                           |
| ------------------------------------------------------------------- | --------------------------------------------------------------------- |
| [MessageEventType](./nodejs-sdk-messageeventtype)                   | Indicates whether a received data channel message expects a response. |
| [RainwayButtonAction](./nodejs-sdk-rainwaybuttonaction)             |                                                                       |
| [RainwayChannelMode](./nodejs-sdk-rainwaychannelmode)               |                                                                       |
| [RainwayInput\_Tag](./nodejs-sdk-rainwayinput-tag)                  |                                                                       |
| [RainwayInputLevel](./nodejs-sdk-rainwayinputlevel)                 |                                                                       |
| [RainwayKeyboardAction](./nodejs-sdk-rainwaykeyboardaction)         |                                                                       |
| [RainwayLogLevel](./nodejs-sdk-rainwayloglevel)                     |                                                                       |
| [RainwayMouseButton](./nodejs-sdk-rainwaymousebutton)               |                                                                       |
| [RainwayPeerState](./nodejs-sdk-rainwaypeerstate)                   |                                                                       |
| [RainwayPenFlags](./nodejs-sdk-rainwaypenflags)                     |                                                                       |
| [RainwayPenMask](./nodejs-sdk-rainwaypenmask)                       |                                                                       |
| [RainwayResolutionStrategy](./nodejs-sdk-rainwayresolutionstrategy) |                                                                       |
| [RainwayScrollAxis](./nodejs-sdk-rainwayscrollaxis)                 |                                                                       |
| [RainwayStreamType](./nodejs-sdk-rainwaystreamtype)                 |                                                                       |
| [RainwayVirtualKey](./nodejs-sdk-rainwayvirtualkey)                 |                                                                       |
| [RainwayXInputButtons](./nodejs-sdk-rainwayxinputbuttons)           |                                                                       |

## Interfaces

| Interface                                                                         | Description                                                           |
| --------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| [ConnectOptions](./nodejs-sdk-connectoptions)                                     | Options for connecting to the Rainway Network.                        |
| [DataChannelEvents](./nodejs-sdk-datachannelevents)                               | Events emitted by [DataChannel](./nodejs-sdk-datachannel)             |
| [DataChannelOptions](./nodejs-sdk-datachanneloptions)                             | Options for creating a data channel.                                  |
| [OutboundStreamEvents](./nodejs-sdk-outboundstreamevents)                         | Events emitted by [OutboundStream](./nodejs-sdk-outboundstream)       |
| [OutboundStreamOptions](./nodejs-sdk-outboundstreamoptions)                       | Options for creating an outbound stream.                              |
| [PeerConnectOptions](./nodejs-sdk-peerconnectoptions)                             | Options for connecting to a remote peer on the Rainway Network.       |
| [PeerEvents](./nodejs-sdk-peerevents)                                             | Events emitted by [Peer](./nodejs-sdk-peer)                           |
| [PeerOptions](./nodejs-sdk-peeroptions)                                           | Options for configuring a Peer.                                       |
| [RainwayConnectionEvents](./nodejs-sdk-rainwayconnectionevents)                   | Events emitted by [RainwayConnection](./nodejs-sdk-rainwayconnection) |
| [RainwayGamepadReport\_Body](./nodejs-sdk-rainwaygamepadreport-body)              |                                                                       |
| [RainwayGamepadRumble\_Body](./nodejs-sdk-rainwaygamepadrumble-body)              |                                                                       |
| [RainwayIncomingConnectionRequest](./nodejs-sdk-rainwayincomingconnectionrequest) |                                                                       |
| [RainwayInput\_Union](./nodejs-sdk-rainwayinput-union)                            |                                                                       |
| [RainwayInput](./nodejs-sdk-rainwayinput)                                         |                                                                       |
| [RainwayInputEvent](./nodejs-sdk-rainwayinputevent)                               |                                                                       |
| [RainwayKeyboardInput\_Body](./nodejs-sdk-rainwaykeyboardinput-body)              |                                                                       |
| [RainwayLogicalInput\_Body](./nodejs-sdk-rainwaylogicalinput-body)                |                                                                       |
| [RainwayMouseAbsolute\_Body](./nodejs-sdk-rainwaymouseabsolute-body)              |                                                                       |
| [RainwayMouseClick\_Body](./nodejs-sdk-rainwaymouseclick-body)                    |                                                                       |
| [RainwayMouseRelative\_Body](./nodejs-sdk-rainwaymouserelative-body)              |                                                                       |
| [RainwayMouseScroll\_Body](./nodejs-sdk-rainwaymousescroll-body)                  |                                                                       |
| [RainwayPenAbsolute\_Body](./nodejs-sdk-rainwaypenabsolute-body)                  |                                                                       |
| [RainwaySDKEvents](./nodejs-sdk-rainwaysdkevents)                                 | Events emitted by [RainwaySDK](./nodejs-sdk-rainwaysdk)               |
| [RainwaySetClipboardText\_Body](./nodejs-sdk-rainwaysetclipboardtext-body)        |                                                                       |
| [RainwayStreamRequestEvent](./nodejs-sdk-rainwaystreamrequestevent)               |                                                                       |
| [RainwayTouchAbsolute](./nodejs-sdk-rainwaytouchabsolute)                         |                                                                       |
| [RainwayTouchesAbsolute\_Body](./nodejs-sdk-rainwaytouchesabsolute-body)          |                                                                       |
| [RainwayTouchPenPointerInfo](./nodejs-sdk-rainwaytouchpenpointerinfo)             |                                                                       |
| [RainwayViewportResize\_Body](./nodejs-sdk-rainwayviewportresize-body)            |                                                                       |

## Variables

| Variable                                                                                | Description                                                   |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [rainway](./nodejs-sdk-rainway)                                                         | Entrypoint and native library facilities for the Rainway SDK. |
| [RainwayGamepadReport\_BodyDef](./nodejs-sdk-rainwaygamepadreport-bodydef)              |                                                               |
| [RainwayGamepadRumble\_BodyDef](./nodejs-sdk-rainwaygamepadrumble-bodydef)              |                                                               |
| [RainwayIncomingConnectionRequestDef](./nodejs-sdk-rainwayincomingconnectionrequestdef) |                                                               |
| [RainwayInputDef](./nodejs-sdk-rainwayinputdef)                                         |                                                               |
| [RainwayInputEventDef](./nodejs-sdk-rainwayinputeventdef)                               |                                                               |
| [RainwayKeyboardInput\_BodyDef](./nodejs-sdk-rainwaykeyboardinput-bodydef)              |                                                               |
| [RainwayLogicalInput\_BodyDef](./nodejs-sdk-rainwaylogicalinput-bodydef)                |                                                               |
| [RainwayMouseAbsolute\_BodyDef](./nodejs-sdk-rainwaymouseabsolute-bodydef)              |                                                               |
| [RainwayMouseClick\_BodyDef](./nodejs-sdk-rainwaymouseclick-bodydef)                    |                                                               |
| [RainwayMouseRelative\_BodyDef](./nodejs-sdk-rainwaymouserelative-bodydef)              |                                                               |
| [RainwayMouseScroll\_BodyDef](./nodejs-sdk-rainwaymousescroll-bodydef)                  |                                                               |
| [RainwayPenAbsolute\_BodyDef](./nodejs-sdk-rainwaypenabsolute-bodydef)                  |                                                               |
| [RainwaySetClipboardText\_BodyDef](./nodejs-sdk-rainwaysetclipboardtext-bodydef)        |                                                               |
| [RainwayStreamRequestEventDef](./nodejs-sdk-rainwaystreamrequesteventdef)               |                                                               |
| [RainwayTouchAbsoluteDef](./nodejs-sdk-rainwaytouchabsolutedef)                         |                                                               |
| [RainwayTouchesAbsolute\_BodyDef](./nodejs-sdk-rainwaytouchesabsolute-bodydef)          |                                                               |
| [RainwayTouchPenPointerInfoDef](./nodejs-sdk-rainwaytouchpenpointerinfodef)             |                                                               |
| [RainwayViewportResize\_BodyDef](./nodejs-sdk-rainwayviewportresize-bodydef)            |                                                               |

## Type Aliases

| Type Alias                                                                                | Description                                   |
| ----------------------------------------------------------------------------------------- | --------------------------------------------- |
| [EventHandler](./nodejs-sdk-eventhandler)                                                 | Helper to constrain event handlers            |
| [EventName](./nodejs-sdk-eventname)                                                       | Helper type to constrain event names          |
| [EventProvider](./nodejs-sdk-eventprovider)                                               | Helper type to constrain event provider types |
| [EventReturnType](./nodejs-sdk-eventreturntype)                                           | The return type of an event handler           |
| [MessageEvent\_2](./nodejs-sdk-messageevent-2)                                            |                                               |
| [RainwayGamepadReport\_BodyType](./nodejs-sdk-rainwaygamepadreport-bodytype)              |                                               |
| [RainwayGamepadRumble\_BodyType](./nodejs-sdk-rainwaygamepadrumble-bodytype)              |                                               |
| [RainwayIncomingConnectionRequestType](./nodejs-sdk-rainwayincomingconnectionrequesttype) |                                               |
| [RainwayInputEventType](./nodejs-sdk-rainwayinputeventtype)                               |                                               |
| [RainwayInputType](./nodejs-sdk-rainwayinputtype)                                         |                                               |
| [RainwayKeyboardInput\_BodyType](./nodejs-sdk-rainwaykeyboardinput-bodytype)              |                                               |
| [RainwayLogicalInput\_BodyType](./nodejs-sdk-rainwaylogicalinput-bodytype)                |                                               |
| [RainwayMouseAbsolute\_BodyType](./nodejs-sdk-rainwaymouseabsolute-bodytype)              |                                               |
| [RainwayMouseClick\_BodyType](./nodejs-sdk-rainwaymouseclick-bodytype)                    |                                               |
| [RainwayMouseRelative\_BodyType](./nodejs-sdk-rainwaymouserelative-bodytype)              |                                               |
| [RainwayMouseScroll\_BodyType](./nodejs-sdk-rainwaymousescroll-bodytype)                  |                                               |
| [RainwayPeerId](./nodejs-sdk-rainwaypeerid)                                               |                                               |
| [RainwayPenAbsolute\_BodyType](./nodejs-sdk-rainwaypenabsolute-bodytype)                  |                                               |
| [RainwaySetClipboardText\_BodyType](./nodejs-sdk-rainwaysetclipboardtext-bodytype)        |                                               |
| [RainwayStreamId](./nodejs-sdk-rainwaystreamid)                                           |                                               |
| [RainwayStreamRequestEventType](./nodejs-sdk-rainwaystreamrequesteventtype)               |                                               |
| [RainwayTouchAbsoluteType](./nodejs-sdk-rainwaytouchabsolutetype)                         |                                               |
| [RainwayTouchesAbsolute\_BodyType](./nodejs-sdk-rainwaytouchesabsolute-bodytype)          |                                               |
| [RainwayTouchPenPointerInfoType](./nodejs-sdk-rainwaytouchpenpointerinfotype)             |                                               |
| [RainwayViewportResize\_BodyType](./nodejs-sdk-rainwayviewportresize-bodytype)            |                                               |
| [uintptr\_t](./nodejs-sdk-uintptr-t)                                                      |                                               |