484 lines
13 KiB
Markdown
484 lines
13 KiB
Markdown
# noVNC API
|
|
|
|
The interface of the noVNC client consists of a single RFB object that
|
|
is instantiated once per connection.
|
|
|
|
## RFB
|
|
|
|
The `RFB` object represents a single connection to a VNC server. It
|
|
communicates using a WebSocket that must provide a standard RFB
|
|
protocol stream.
|
|
|
|
### Constructor
|
|
|
|
[`RFB()`](#rfb-1)
|
|
- Creates and returns a new `RFB` object.
|
|
|
|
### Properties
|
|
|
|
`localCursor`
|
|
- Is a `boolean` indicating if a client side cursor should be
|
|
requested. Disabled by default.
|
|
|
|
`viewOnly`
|
|
- Is a `boolean` indicating if any events (e.g. key presses or mouse
|
|
movement) should be prevented from being sent to the server.
|
|
Disabled by default.
|
|
|
|
`touchButton`
|
|
- Is a `long` controlling the button mask that should be simulated
|
|
when a touch event is recieved. Uses the same values as
|
|
[`MouseEvent.button`](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button).
|
|
Is set to `1` by default.
|
|
|
|
`scale`
|
|
- Is a `double` indicating how the framebuffer contents should be
|
|
scaled before being rendered on to the canvas. See also
|
|
[`RFB.autoscale()`](#rfbautoscale). Is set to `1.0` by default.
|
|
|
|
`viewport`
|
|
- Is a `boolean` indicating if the canvas should be clipped to its
|
|
container. When disabled the container must be able to handle the
|
|
resulting overflow. Disabled by default.
|
|
|
|
`viewportDrag`
|
|
- Is a `boolean` indicating if mouse events should control the
|
|
relative position of a clipped canvas. Only relevant if `viewport`
|
|
is enabled. Disabled by default.
|
|
|
|
`disconnectTimeout`
|
|
- Is a `long` indicating how many seconds to wait for a disconnect
|
|
request to complete. Is set to `3` by default.
|
|
|
|
`capabilities` *Read only*
|
|
- Is an `Object` indicating which optional extensions are available
|
|
on the server. Some methods may only be called if the corresponding
|
|
capability is set. The following capabilities are defined:
|
|
|
|
| name | type | description
|
|
| -------- | --------- | -----------
|
|
| `power` | `boolean` | Machine power control is available
|
|
| `resize` | `boolean` | The framebuffer can be resized
|
|
|
|
### Event handlers
|
|
|
|
[`RFB.onupdatestate()`](#rfbonupdatestate)
|
|
- An event handler called when the connection state of the `RFB`
|
|
object changes.
|
|
|
|
[`RFB.onnotification()`](#rfbonnotification)
|
|
- An event handler called when the `RFB` usage has a message to
|
|
display to the user.
|
|
|
|
[`RFB.ondisconnected()`](#rfbondisconnected)
|
|
- An event handler called when the `RFB` object disconnects.
|
|
|
|
[`RFB.oncredentialsrequired()`](#rfboncredentialsrequired)
|
|
- An event hander called when more credentials must be given to
|
|
continue.
|
|
|
|
[`RFB.onclipboard()`](#rfbonclipboard)
|
|
- An event handler called when clipboard data is received from the
|
|
server.
|
|
|
|
[`RFB.onbell()`](#rfbonbell)
|
|
- An event handler called when a audible bell request is received
|
|
from the server.
|
|
|
|
[`RFB.onfbresize()`](#rfbonfbresize)
|
|
- An event handler called when the framebuffer size is changed.
|
|
|
|
[`RFB.ondesktopname()`](#rfbondesktopname)
|
|
- An event handler called when the remote desktop name changes.
|
|
|
|
[`RFB.oncapabilities()`](#rfboncapabilities)
|
|
- An event handler called when `RFB.capabilities` is updated.
|
|
|
|
### Methods
|
|
|
|
[`RFB.connect()`](#rfbconnect)
|
|
- Connect to a server.
|
|
|
|
[`RFB.disconnect()`](#rfbdisconnect)
|
|
- Disconnect from the server.
|
|
|
|
[`RFB.sendCredentials()`](#rfbsendcredentials)
|
|
- Send credentials to server. Should be called after
|
|
[`oncredentialsrequired`](#rfboncredentialsrequired) has been
|
|
called.
|
|
|
|
[`RFB.sendKey()`](#rfbsendKey)
|
|
- Send a key event.
|
|
|
|
[`RFB.sendCtrlAltDel()`](#rfbsendctrlaltdel)
|
|
- Send Ctrl-Alt-Del key sequence.
|
|
|
|
[`RFB.machineShutdown()`](#rfbmachineshutdown)
|
|
- Request a shutdown of the remote machine.
|
|
|
|
[`RFB.machineReboot()`](#rfbmachinereboot)
|
|
- Request a reboot of the remote machine.
|
|
|
|
[`RFB.machineReset()`](#rfbmachinereset)
|
|
- Request a reset of the remote machine.
|
|
|
|
[`RFB.clipboardPasteFrom()`](#rfbclipboardPasteFrom)
|
|
- Send clipboard contents to server.
|
|
|
|
[`RFB.autoscale()`](#rfbautoscale)
|
|
- Set `RFB.scale` so that the framebuffer fits a specified container.
|
|
|
|
[`RFB.clippingDisplay()`](#rfbclippingDisplay)
|
|
- Returns `true` if the framebuffer is larger than what is currently
|
|
displayed on the canvas.
|
|
|
|
[`RFB.requestDesktopSize()`](#rfbrequestDesktopSize)
|
|
- Send a request to change the remote desktop size.
|
|
|
|
[`RFB.viewportChangeSize()`](#rfbviewportChangeSize)
|
|
- Change size of the viewport.
|
|
|
|
### Details
|
|
|
|
#### RFB()
|
|
|
|
The `RFB()` constructor returns a new `RFB` object. The object will
|
|
initially be disconnected and [`RFB.connect()`](#rfbconnect) must be
|
|
called before the object will be useful.
|
|
|
|
##### Syntax
|
|
|
|
var rfb = new RFB( target );
|
|
|
|
###### Parameters
|
|
|
|
**`target`**
|
|
- A [`HTMLCanvasElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
|
|
that specifies where graphics should be rendered and input events
|
|
should be monitored.
|
|
|
|
#### RFB.onupdatestate
|
|
|
|
The `onupdatestate` event handler is fired after the noVNC connection
|
|
state changes. Here is a list of the states that are reported:
|
|
|
|
| connection state | description
|
|
| ----------------- | ------------
|
|
| `"connecting"` | starting to connect
|
|
| `"connected"` | connected normally
|
|
| `"disconnecting"` | starting to disconnect
|
|
| `"disconnected"` | disconnected
|
|
|
|
Note that a `RFB` objects can not transition from the disconnected
|
|
state in any way, a new instance of the object has to be created for
|
|
new connections.
|
|
|
|
##### Syntax
|
|
|
|
RFB.onupdatestate = function(rfb, state) { ... }
|
|
|
|
#### RFB.onnotification
|
|
|
|
The `onnotification` event handler is fired when the `RFB` object wants
|
|
a message displayed to the user. **`msg`** is a `DOMString` specifying
|
|
the actual message, and **`level`** is a `DOMString` indicating the
|
|
severity of the message. The following levels are currently defined:
|
|
|
|
- `"normal"`
|
|
- `"warn"`
|
|
- `"error"`
|
|
|
|
**`options`** is currently unused.
|
|
|
|
##### Syntax
|
|
|
|
RFB.onnotification = function(rfb, msg, level, options) { ... }
|
|
|
|
#### RFB.ondisconnected
|
|
|
|
The `ondisconnected` event handler is fired when the connection has
|
|
been terminated. **`reason`** is `undefined` for a clean termination
|
|
and a `DOMString` specifying the reason in the event of an unexpected
|
|
termination.
|
|
|
|
##### Syntax
|
|
|
|
RFB.ondisconnected = function(rfb, reason) { ... }
|
|
|
|
#### RFB.oncredentialsrequired
|
|
|
|
The `oncredentialsrequired` event handler is fired when the server
|
|
requests more credentials than were specified to
|
|
[`RFB.connect()`](#rfbconnect). The **`types`** argument is a list of
|
|
all the credentials that are required.
|
|
|
|
##### Syntax
|
|
|
|
RFB.oncredentialsrequired = function(rfb, types) { ... }
|
|
|
|
#### RFB.onclipboard
|
|
|
|
The `onclipboard` event handler is fired when the server has sent
|
|
clipboard data.
|
|
|
|
##### Syntax
|
|
|
|
RFB.onclipboard = function(rfb, text) { ... }
|
|
|
|
#### RFB.onbell
|
|
|
|
The `onbell` event handler is fired when the server has requested an
|
|
audible bell.
|
|
|
|
##### Syntax
|
|
|
|
RFB.onbell = function(rfb) { ... }
|
|
|
|
#### RFB.onfbresize
|
|
|
|
The `onfbresize` event handler is fired when the framebuffer has
|
|
changed dimensions.
|
|
|
|
##### Syntax
|
|
|
|
RFB.onfbresize = function(rfb, width, height) { ... }
|
|
|
|
#### RFB.ondesktopname
|
|
|
|
The `ondesktopname` event handler is fired when the name of the remote
|
|
desktop changes.
|
|
|
|
##### Syntax
|
|
|
|
RFB.ondesktopname = function(rfb, name) { ... }
|
|
|
|
#### RFB.oncapabilities
|
|
|
|
The `oncapabilities` event handler is fired whenever an entry is added
|
|
or removed from `RFB.capabilities`.
|
|
|
|
##### Syntax
|
|
|
|
RFB.oncapabilities = function(rfb, capabilites) { ... }
|
|
|
|
#### RFB.connect()
|
|
|
|
The `RFB.connect()` method is used to initiate a new connection to a
|
|
specified VNC server.
|
|
|
|
##### Syntax
|
|
|
|
RFB.connect( url [, options] );
|
|
|
|
###### Parameters
|
|
|
|
**`url`**
|
|
- A `DOMString` specifying the VNC server to connect to. This must be
|
|
a valid WebSocket URL.
|
|
|
|
**`options`** *Optional*
|
|
- An `Object` specifying extra details about how the connection
|
|
should be made.
|
|
|
|
Possible options:
|
|
|
|
`shared`
|
|
- A `boolean` indicating if the remote server should be shared or
|
|
if any other connected clients should be disconnected. Enabled
|
|
by default.
|
|
|
|
`credentials`
|
|
- An `Object` specifying the credentials to provide to the server
|
|
when authenticating. The following credentials are possible:
|
|
|
|
| name | type | description
|
|
| ------------ | ----------- | -----------
|
|
| `"username"` | `DOMString` | The user that authenticates
|
|
| `"password"` | `DOMString` | Password for the user
|
|
| `"target"` | `DOMString` | Target machine or session
|
|
|
|
`repeaterID`
|
|
- A `DOMString` specifying the ID to provide to any VNC repeater
|
|
encountered.
|
|
|
|
#### RFB.disconnect()
|
|
|
|
The `RFB.disconnect()` method is used to disconnect from the currently
|
|
connected server.
|
|
|
|
##### Syntax
|
|
|
|
RFB.disconnect( );
|
|
|
|
#### RFB.sendCredentials()
|
|
|
|
The `RFB.sendCredentials()` method is used to provide the missing
|
|
credentials after `RFB.oncredentialsrequired` has been fired.
|
|
|
|
##### Syntax
|
|
|
|
RFB.sendCredentials( credentials );
|
|
|
|
###### Parameters
|
|
|
|
**`credentials`**
|
|
- An `Object` specifying the credentials to provide to the server
|
|
when authenticating. See [`RFB.connect()`](#rfbconnect) for
|
|
details.
|
|
|
|
#### RFB.sendKey()
|
|
|
|
The `RFB.sendKey()` method is used to send a key event to the server.
|
|
|
|
##### Syntax
|
|
|
|
RFB.sendKey( keysym, code [, down] );
|
|
|
|
###### Parameters
|
|
|
|
**`keysym`**
|
|
- A `long` specifying the RFB keysym to send. Can be `0` if a valid
|
|
**`code`** is specified.
|
|
|
|
**`code`**
|
|
- A `DOMString` specifying the physical key to send. Valid values are
|
|
those that can be specified to
|
|
[`KeyboardEvent.code`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code).
|
|
If the physical key cannot be determined then `null` shall be
|
|
specified.
|
|
|
|
**`down`** *Optional*
|
|
- A `boolean` specifying if a press or a release event should be
|
|
sent. If omitted then both a press and release event are sent.
|
|
|
|
#### RFB.sendCtrlAltDel()
|
|
|
|
The `RFB.sendCtrlAltDel()` method is used to send the key sequence
|
|
*left Control*, *left Alt*, *Delete*. This is a convenience wrapper
|
|
around [`RFB.sendKey()`](#rfbsendkey).
|
|
|
|
##### Syntax
|
|
|
|
RFB.sendCtrlAltDel( );
|
|
|
|
#### RFB.machineShutdown()
|
|
|
|
The `RFB.machineShutdown()` method is used to request to shut down the
|
|
remote machine. The capability `power` must be set for this method to
|
|
have any effect.
|
|
|
|
##### Syntax
|
|
|
|
RFB.machineShutdown( );
|
|
|
|
#### RFB.machineReboot()
|
|
|
|
The `RFB.machineReboot()` method is used to request a clean reboot of
|
|
the remote machine. The capability `power` must be set for this method
|
|
to have any effect.
|
|
|
|
##### Syntax
|
|
|
|
RFB.machineReboot( );
|
|
|
|
#### RFB.machineReset()
|
|
|
|
The `RFB.machineReset()` method is used to request a forced reset of
|
|
the remote machine. The capability `power` must be set for this method
|
|
to have any effect.
|
|
|
|
##### Syntax
|
|
|
|
RFB.machineReset( );
|
|
|
|
#### RFB.clipboardPasteFrom()
|
|
|
|
The `RFB.clipboardPasteFrom()` method is used to send clipboard data
|
|
to the remote server.
|
|
|
|
##### Syntax
|
|
|
|
RFB.clipboardPasteFrom( text );
|
|
|
|
###### Parameters
|
|
|
|
**`text`**
|
|
- A `DOMString` specifying the clipboard data to send. Currently only
|
|
characters from ISO 8859-1 are supported.
|
|
|
|
#### RFB.autoscale()
|
|
|
|
The `RFB.autoscale()` method is used to automatically adjust
|
|
`RFB.scale` to fit given dimensions.
|
|
|
|
##### Syntax
|
|
|
|
RFB.autoscale( width, height, downscaleOnly );
|
|
|
|
###### Parameters
|
|
|
|
**`width`**
|
|
- A `long` specifying the maximum width of the canvas in CSS pixels.
|
|
|
|
**`height`**
|
|
- A `long` specifying the maximum height of the canvas in CSS pixels.
|
|
|
|
**`downscaleOnly`**
|
|
- A `boolean` specifying if the scale must be kept below `1.0`.
|
|
|
|
#### RFB.clippingDisplay()
|
|
|
|
The `RFB.clippingDisplay()` method is used to determine if the
|
|
framebuffer is larger than the current canvas, i.e. it is being
|
|
clipped.
|
|
|
|
##### Syntax
|
|
|
|
RFB.clippingDisplay( );
|
|
|
|
###### Return value
|
|
|
|
Returns a `boolean` indicating if the framebuffer is currently being
|
|
clipped.
|
|
|
|
#### RFB.requestDesktopSize()
|
|
|
|
The `RFB.requestDesktopSize()` method is used to request a change of
|
|
the framebuffer. The capability `resize` must be set for this method to
|
|
have any effect.
|
|
|
|
Note that this is merely a request and the server may deny it.
|
|
[`RFB.onfbresize`](#rfbonfbresize) will be called when the framebuffer
|
|
actually changes dimensions.
|
|
|
|
##### Syntax
|
|
|
|
RFB.requestDesktopSize( width, height );
|
|
|
|
###### Parameters
|
|
|
|
**`width`**
|
|
- A `long` specifying the new requested width in CSS pixels.
|
|
|
|
**`height`**
|
|
- A `long` specifying the new requested height in CSS pixels.
|
|
|
|
#### RFB.viewportChangeSize()
|
|
|
|
The `RFB.viewportChangeSize()` method is used to change the size of the
|
|
canvas rather than the underlying framebuffer.
|
|
|
|
This method has no effect if `RFB.viewport` is set to `false`.
|
|
|
|
##### Syntax
|
|
|
|
RFB.viewportChangeSize( width, height );
|
|
|
|
###### Parameters
|
|
|
|
**`width`**
|
|
- A `long` specifying the new width in CSS pixels.
|
|
|
|
**`height`**
|
|
- A `long` specifying the new height in CSS pixels.
|