3 The interface of the noVNC client consists of a single RFB object that
4 is instantiated once per connection.
8 The `RFB` object represents a single connection to a VNC server. It
9 communicates using a WebSocket that must provide a standard RFB
15 - Creates and returns a new `RFB` object.
20 - Is a `boolean` indicating if any events (e.g. key presses or mouse
21 movement) should be prevented from being sent to the server.
25 - Is a `boolean` indicating if keyboard focus should automatically be
26 moved to the remote session when a `mousedown` or `touchstart`
30 - Is a `long` controlling the button mask that should be simulated
31 when a touch event is recieved. Uses the same values as
32 [`MouseEvent.button`](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button).
33 Is set to `1` by default.
36 - Is a `boolean` indicating if the remote session should be clipped
37 to its container. When disabled scrollbars will be shown to handle
38 the resulting overflow. Disabled by default.
41 - Is a `boolean` indicating if mouse events should control the
42 relative position of a clipped remote session. Only relevant if
43 `clipViewport` is enabled. Disabled by default.
46 - Is a `boolean` indicating if the remote session should be scaled
47 locally so it fits its container. When disabled it will be centered
48 if the remote session is smaller than its container, or handled
49 according to `clipViewport` if it is larger. Disabled by default.
52 - Is a `boolean` indicating if a request to resize the remote session
53 should be sent whenever the container changes dimensions. Disabled
57 - Is a `boolean` indicating whether a dot cursor should be shown
58 instead of a zero-sized or fully-transparent cursor if the server
59 sets such invisible cursor. Disabled by default.
61 `capabilities` *Read only*
62 - Is an `Object` indicating which optional extensions are available
63 on the server. Some methods may only be called if the corresponding
64 capability is set. The following capabilities are defined:
66 | name | type | description
67 | -------- | --------- | -----------
68 | `power` | `boolean` | Machine power control is available
73 - The `connect` event is fired when the `RFB` object has completed
74 the connection and handshaking with the server.
76 [`disconnect`](#disconnected)
77 - The `disconnect` event is fired when the `RFB` object disconnects.
79 [`credentialsrequired`](#credentialsrequired)
80 - The `credentialsrequired` event is fired when more credentials must
83 [`securityfailure`](#securityfailure)
84 - The `securityfailure` event is fired when the security negotiation
85 with the server fails.
87 [`clipboard`](#clipboard)
88 - The `clipboard` event is fired when clipboard data is received from
92 - The `bell` event is fired when a audible bell request is received
95 [`desktopname`](#desktopname)
96 - The `desktopname` event is fired when the remote desktop name
99 [`capabilities`](#capabilities)
100 - The `capabilities` event is fired when `RFB.capabilities` is
105 [`RFB.disconnect()`](#rfbdisconnect)
106 - Disconnect from the server.
108 [`RFB.sendCredentials()`](#rfbsendcredentials)
109 - Send credentials to server. Should be called after the
110 [`credentialsrequired`](#credentialsrequired) event has fired.
112 [`RFB.sendKey()`](#rfbsendKey)
115 [`RFB.sendCtrlAltDel()`](#rfbsendctrlaltdel)
116 - Send Ctrl-Alt-Del key sequence.
118 [`RFB.focus()`](#rfbfocus)
119 - Move keyboard focus to the remote session.
121 [`RFB.blur()`](#rfbblur)
122 - Remove keyboard focus from the remote session.
124 [`RFB.machineShutdown()`](#rfbmachineshutdown)
125 - Request a shutdown of the remote machine.
127 [`RFB.machineReboot()`](#rfbmachinereboot)
128 - Request a reboot of the remote machine.
130 [`RFB.machineReset()`](#rfbmachinereset)
131 - Request a reset of the remote machine.
133 [`RFB.clipboardPasteFrom()`](#rfbclipboardPasteFrom)
134 - Send clipboard contents to server.
140 The `RFB()` constructor returns a new `RFB` object and initiates a new
141 connection to a specified VNC server.
145 let rfb = new RFB( target, url [, options] );
150 - A block [`HTMLElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement)
151 that specifies where the `RFB` object should attach itself. The
152 existing contents of the `HTMLElement` will be untouched, but new
153 elements will be added during the lifetime of the `RFB` object.
156 - A `DOMString` specifying the VNC server to connect to. This must be
157 a valid WebSocket URL.
159 **`options`** *Optional*
160 - An `Object` specifying extra details about how the connection
166 - A `boolean` indicating if the remote server should be shared or
167 if any other connected clients should be disconnected. Enabled
171 - An `Object` specifying the credentials to provide to the server
172 when authenticating. The following credentials are possible:
174 | name | type | description
175 | ------------ | ----------- | -----------
176 | `"username"` | `DOMString` | The user that authenticates
177 | `"password"` | `DOMString` | Password for the user
178 | `"target"` | `DOMString` | Target machine or session
181 - A `DOMString` specifying the ID to provide to any VNC repeater
186 The `connect` event is fired after all the handshaking with the server
187 is completed and the connection is fully established. After this event
188 the `RFB` object is ready to recieve graphics updates and to send input.
192 The `disconnect` event is fired when the connection has been
193 terminated. The `detail` property is an `Object` that contains the
194 property `clean`. `clean` is a `boolean` indicating if the termination
195 was clean or not. In the event of an unexpected termination or an error
196 `clean` will be set to false.
198 #### credentialsrequired
200 The `credentialsrequired` event is fired when the server requests more
201 credentials than were specified to [`RFB()`](#rfb-1). The `detail`
202 property is an `Object` containing the property `types` which is an
203 `Array` of `DOMString` listing the credentials that are required.
207 The `securityfailure` event is fired when the handshaking process with
208 the server fails during the security negotiation step. The `detail`
209 property is an `Object` containing the following properties:
211 | Property | Type | Description
212 | -------- | ----------- | -----------
213 | `status` | `long` | The failure status code
214 | `reason` | `DOMString` | The **optional** reason for the failure
216 The property `status` corresponds to the
217 [SecurityResult](https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#securityresult)
218 status code in cases of failure. A status of zero will not be sent in
219 this event since that indicates a successful security handshaking
220 process. The optional property `reason` is provided by the server and
221 thus the language of the string is not known. However most servers will
222 probably send English strings. The server can choose to not send a
223 reason and in these cases the `reason` property will be omitted.
227 The `clipboard` event is fired when the server has sent clipboard data.
228 The `detail` property is an `Object` containing the property `text`
229 which is a `DOMString` with the clipboard data.
233 The `bell` event is fired when the server has requested an audible
238 The `desktopname` event is fired when the name of the remote desktop
239 changes. The `detail` property is an `Object` with the property `name`
240 which is a `DOMString` specifying the new name.
244 The `capabilities` event is fired whenever an entry is added or removed
245 from `RFB.capabilities`. The `detail` property is an `Object` with the
246 property `capabilities` containing the new value of `RFB.capabilities`.
248 #### RFB.disconnect()
250 The `RFB.disconnect()` method is used to disconnect from the currently
257 #### RFB.sendCredentials()
259 The `RFB.sendCredentials()` method is used to provide the missing
260 credentials after a `credentialsrequired` event has been fired.
264 RFB.sendCredentials( credentials );
269 - An `Object` specifying the credentials to provide to the server
270 when authenticating. See [`RFB()`](#rfb-1) for details.
274 The `RFB.sendKey()` method is used to send a key event to the server.
278 RFB.sendKey( keysym, code [, down] );
283 - A `long` specifying the RFB keysym to send. Can be `0` if a valid
284 **`code`** is specified.
287 - A `DOMString` specifying the physical key to send. Valid values are
288 those that can be specified to
289 [`KeyboardEvent.code`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code).
290 If the physical key cannot be determined then `null` shall be
293 **`down`** *Optional*
294 - A `boolean` specifying if a press or a release event should be
295 sent. If omitted then both a press and release event are sent.
297 #### RFB.sendCtrlAltDel()
299 The `RFB.sendCtrlAltDel()` method is used to send the key sequence
300 *left Control*, *left Alt*, *Delete*. This is a convenience wrapper
301 around [`RFB.sendKey()`](#rfbsendkey).
305 RFB.sendCtrlAltDel( );
309 The `RFB.focus()` method sets the keyboard focus on the remote session.
310 Keyboard events will be sent to the remote server after this point.
318 The `RFB.blur()` method remove keyboard focus on the remote session.
319 Keyboard events will no longer be sent to the remote server after this
326 #### RFB.machineShutdown()
328 The `RFB.machineShutdown()` method is used to request to shut down the
329 remote machine. The capability `power` must be set for this method to
334 RFB.machineShutdown( );
336 #### RFB.machineReboot()
338 The `RFB.machineReboot()` method is used to request a clean reboot of
339 the remote machine. The capability `power` must be set for this method
344 RFB.machineReboot( );
346 #### RFB.machineReset()
348 The `RFB.machineReset()` method is used to request a forced reset of
349 the remote machine. The capability `power` must be set for this method
356 #### RFB.clipboardPasteFrom()
358 The `RFB.clipboardPasteFrom()` method is used to send clipboard data
359 to the remote server.
363 RFB.clipboardPasteFrom( text );
368 - A `DOMString` specifying the clipboard data to send. Currently only
369 characters from ISO 8859-1 are supported.