]> git.proxmox.com Git - mirror_novnc.git/blame - docs/API.md
Remove disconnectTimeout property
[mirror_novnc.git] / docs / API.md
CommitLineData
4f90c1d3 1# noVNC API
5ce91550 2
6929a0a1
PO
3The interface of the noVNC client consists of a single RFB object that
4is instantiated once per connection.
5ce91550 5
4f90c1d3 6## RFB
5ce91550 7
4f90c1d3
PO
8The `RFB` object represents a single connection to a VNC server. It
9communicates using a WebSocket that must provide a standard RFB
10protocol stream.
11
12### Constructor
13
14[`RFB()`](#rfb-1)
15 - Creates and returns a new `RFB` object.
16
17### Properties
18
4f90c1d3
PO
19`viewOnly`
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.
22 Disabled by default.
23
24`touchButton`
25 - Is a `long` controlling the button mask that should be simulated
26 when a touch event is recieved. Uses the same values as
27 [`MouseEvent.button`](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button).
28 Is set to `1` by default.
29
0460e5fd 30`viewportScale`
4f90c1d3
PO
31 - Is a `double` indicating how the framebuffer contents should be
32 scaled before being rendered on to the canvas. See also
33 [`RFB.autoscale()`](#rfbautoscale). Is set to `1.0` by default.
34
0460e5fd 35`clipViewport`
4f90c1d3
PO
36 - Is a `boolean` indicating if the canvas should be clipped to its
37 container. When disabled the container must be able to handle the
38 resulting overflow. Disabled by default.
39
0460e5fd 40`dragViewport`
4f90c1d3 41 - Is a `boolean` indicating if mouse events should control the
0460e5fd
PO
42 relative position of a clipped canvas. Only relevant if
43 `clipViewport` is enabled. Disabled by default.
4f90c1d3 44
a80aa416
PO
45`isClipped` *Read only*
46 - Is a `boolean` indicating if the framebuffer is larger than the
47 current canvas, i.e. it is being clipped.
48
4f90c1d3
PO
49`capabilities` *Read only*
50 - Is an `Object` indicating which optional extensions are available
51 on the server. Some methods may only be called if the corresponding
52 capability is set. The following capabilities are defined:
53
54 | name | type | description
55 | -------- | --------- | -----------
56 | `power` | `boolean` | Machine power control is available
57 | `resize` | `boolean` | The framebuffer can be resized
58
59### Event handlers
60
61[`RFB.onupdatestate()`](#rfbonupdatestate)
62 - An event handler called when the connection state of the `RFB`
63 object changes.
64
65[`RFB.onnotification()`](#rfbonnotification)
66 - An event handler called when the `RFB` usage has a message to
67 display to the user.
68
69[`RFB.ondisconnected()`](#rfbondisconnected)
70 - An event handler called when the `RFB` object disconnects.
71
72[`RFB.oncredentialsrequired()`](#rfboncredentialsrequired)
73 - An event hander called when more credentials must be given to
74 continue.
75
76[`RFB.onclipboard()`](#rfbonclipboard)
77 - An event handler called when clipboard data is received from the
78 server.
79
80[`RFB.onbell()`](#rfbonbell)
81 - An event handler called when a audible bell request is received
82 from the server.
83
84[`RFB.onfbresize()`](#rfbonfbresize)
85 - An event handler called when the framebuffer size is changed.
86
87[`RFB.ondesktopname()`](#rfbondesktopname)
88 - An event handler called when the remote desktop name changes.
89
90[`RFB.oncapabilities()`](#rfboncapabilities)
91 - An event handler called when `RFB.capabilities` is updated.
92
93### Methods
94
95[`RFB.connect()`](#rfbconnect)
96 - Connect to a server.
97
98[`RFB.disconnect()`](#rfbdisconnect)
99 - Disconnect from the server.
100
101[`RFB.sendCredentials()`](#rfbsendcredentials)
102 - Send credentials to server. Should be called after
103 [`oncredentialsrequired`](#rfboncredentialsrequired) has been
104 called.
105
106[`RFB.sendKey()`](#rfbsendKey)
107 - Send a key event.
108
109[`RFB.sendCtrlAltDel()`](#rfbsendctrlaltdel)
110 - Send Ctrl-Alt-Del key sequence.
111
112[`RFB.machineShutdown()`](#rfbmachineshutdown)
113 - Request a shutdown of the remote machine.
114
115[`RFB.machineReboot()`](#rfbmachinereboot)
116 - Request a reboot of the remote machine.
117
118[`RFB.machineReset()`](#rfbmachinereset)
119 - Request a reset of the remote machine.
120
121[`RFB.clipboardPasteFrom()`](#rfbclipboardPasteFrom)
122 - Send clipboard contents to server.
123
124[`RFB.autoscale()`](#rfbautoscale)
0460e5fd
PO
125 - Set `RFB.viewportScale` so that the framebuffer fits a specified
126 container.
4f90c1d3 127
4f90c1d3
PO
128[`RFB.requestDesktopSize()`](#rfbrequestDesktopSize)
129 - Send a request to change the remote desktop size.
130
131[`RFB.viewportChangeSize()`](#rfbviewportChangeSize)
132 - Change size of the viewport.
133
134### Details
135
136#### RFB()
137
138The `RFB()` constructor returns a new `RFB` object. The object will
139initially be disconnected and [`RFB.connect()`](#rfbconnect) must be
140called before the object will be useful.
141
142##### Syntax
143
144 var rfb = new RFB( target );
145
146###### Parameters
147
148**`target`**
149 - A [`HTMLCanvasElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement)
150 that specifies where graphics should be rendered and input events
151 should be monitored.
152
153#### RFB.onupdatestate
154
155The `onupdatestate` event handler is fired after the noVNC connection
156state changes. Here is a list of the states that are reported:
157
158| connection state | description
159| ----------------- | ------------
160| `"connecting"` | starting to connect
161| `"connected"` | connected normally
162| `"disconnecting"` | starting to disconnect
163| `"disconnected"` | disconnected
164
165Note that a `RFB` objects can not transition from the disconnected
166state in any way, a new instance of the object has to be created for
167new connections.
168
169##### Syntax
170
171 RFB.onupdatestate = function(rfb, state) { ... }
172
173#### RFB.onnotification
174
175The `onnotification` event handler is fired when the `RFB` object wants
176a message displayed to the user. **`msg`** is a `DOMString` specifying
177the actual message, and **`level`** is a `DOMString` indicating the
178severity of the message. The following levels are currently defined:
179
180 - `"normal"`
181 - `"warn"`
182 - `"error"`
183
184**`options`** is currently unused.
185
186##### Syntax
187
188 RFB.onnotification = function(rfb, msg, level, options) { ... }
189
190#### RFB.ondisconnected
191
192The `ondisconnected` event handler is fired when the connection has
193been terminated. **`reason`** is `undefined` for a clean termination
194and a `DOMString` specifying the reason in the event of an unexpected
195termination.
196
197##### Syntax
198
199 RFB.ondisconnected = function(rfb, reason) { ... }
200
201#### RFB.oncredentialsrequired
202
203The `oncredentialsrequired` event handler is fired when the server
204requests more credentials than were specified to
205[`RFB.connect()`](#rfbconnect). The **`types`** argument is a list of
206all the credentials that are required.
207
208##### Syntax
209
210 RFB.oncredentialsrequired = function(rfb, types) { ... }
211
212#### RFB.onclipboard
213
214The `onclipboard` event handler is fired when the server has sent
215clipboard data.
216
217##### Syntax
218
219 RFB.onclipboard = function(rfb, text) { ... }
220
221#### RFB.onbell
222
223The `onbell` event handler is fired when the server has requested an
224audible bell.
225
226##### Syntax
227
228 RFB.onbell = function(rfb) { ... }
229
230#### RFB.onfbresize
231
232The `onfbresize` event handler is fired when the framebuffer has
233changed dimensions.
234
235##### Syntax
236
237 RFB.onfbresize = function(rfb, width, height) { ... }
238
239#### RFB.ondesktopname
240
241The `ondesktopname` event handler is fired when the name of the remote
242desktop changes.
243
244##### Syntax
245
246 RFB.ondesktopname = function(rfb, name) { ... }
247
248#### RFB.oncapabilities
249
250The `oncapabilities` event handler is fired whenever an entry is added
251or removed from `RFB.capabilities`.
252
253##### Syntax
254
255 RFB.oncapabilities = function(rfb, capabilites) { ... }
256
257#### RFB.connect()
258
259The `RFB.connect()` method is used to initiate a new connection to a
260specified VNC server.
261
262##### Syntax
263
264 RFB.connect( url [, options] );
265
266###### Parameters
267
268**`url`**
269 - A `DOMString` specifying the VNC server to connect to. This must be
270 a valid WebSocket URL.
271
272**`options`** *Optional*
273 - An `Object` specifying extra details about how the connection
274 should be made.
275
276 Possible options:
277
278 `shared`
279 - A `boolean` indicating if the remote server should be shared or
280 if any other connected clients should be disconnected. Enabled
281 by default.
282
283 `credentials`
284 - An `Object` specifying the credentials to provide to the server
285 when authenticating. The following credentials are possible:
286
287 | name | type | description
288 | ------------ | ----------- | -----------
289 | `"username"` | `DOMString` | The user that authenticates
290 | `"password"` | `DOMString` | Password for the user
291 | `"target"` | `DOMString` | Target machine or session
292
293 `repeaterID`
294 - A `DOMString` specifying the ID to provide to any VNC repeater
295 encountered.
296
297#### RFB.disconnect()
298
299The `RFB.disconnect()` method is used to disconnect from the currently
300connected server.
301
302##### Syntax
303
304 RFB.disconnect( );
305
306#### RFB.sendCredentials()
307
308The `RFB.sendCredentials()` method is used to provide the missing
309credentials after `RFB.oncredentialsrequired` has been fired.
310
311##### Syntax
312
313 RFB.sendCredentials( credentials );
314
315###### Parameters
316
317**`credentials`**
318 - An `Object` specifying the credentials to provide to the server
319 when authenticating. See [`RFB.connect()`](#rfbconnect) for
320 details.
321
322#### RFB.sendKey()
323
324The `RFB.sendKey()` method is used to send a key event to the server.
325
326##### Syntax
327
328 RFB.sendKey( keysym, code [, down] );
329
330###### Parameters
331
332**`keysym`**
333 - A `long` specifying the RFB keysym to send. Can be `0` if a valid
334 **`code`** is specified.
335
336**`code`**
337 - A `DOMString` specifying the physical key to send. Valid values are
338 those that can be specified to
339 [`KeyboardEvent.code`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code).
340 If the physical key cannot be determined then `null` shall be
341 specified.
342
343**`down`** *Optional*
344 - A `boolean` specifying if a press or a release event should be
345 sent. If omitted then both a press and release event are sent.
346
347#### RFB.sendCtrlAltDel()
348
349The `RFB.sendCtrlAltDel()` method is used to send the key sequence
350*left Control*, *left Alt*, *Delete*. This is a convenience wrapper
351around [`RFB.sendKey()`](#rfbsendkey).
352
353##### Syntax
354
355 RFB.sendCtrlAltDel( );
356
357#### RFB.machineShutdown()
358
359The `RFB.machineShutdown()` method is used to request to shut down the
360remote machine. The capability `power` must be set for this method to
361have any effect.
362
363##### Syntax
364
365 RFB.machineShutdown( );
366
367#### RFB.machineReboot()
368
369The `RFB.machineReboot()` method is used to request a clean reboot of
370the remote machine. The capability `power` must be set for this method
371to have any effect.
372
373##### Syntax
374
375 RFB.machineReboot( );
376
377#### RFB.machineReset()
378
379The `RFB.machineReset()` method is used to request a forced reset of
380the remote machine. The capability `power` must be set for this method
381to have any effect.
382
383##### Syntax
384
385 RFB.machineReset( );
386
387#### RFB.clipboardPasteFrom()
388
389The `RFB.clipboardPasteFrom()` method is used to send clipboard data
390to the remote server.
391
392##### Syntax
393
394 RFB.clipboardPasteFrom( text );
395
396###### Parameters
397
398**`text`**
399 - A `DOMString` specifying the clipboard data to send. Currently only
400 characters from ISO 8859-1 are supported.
401
402#### RFB.autoscale()
403
404The `RFB.autoscale()` method is used to automatically adjust
0460e5fd 405`RFB.viewportScale` to fit given dimensions.
4f90c1d3
PO
406
407##### Syntax
408
002907d2 409 RFB.autoscale( width, height );
4f90c1d3
PO
410
411###### Parameters
412
413**`width`**
414 - A `long` specifying the maximum width of the canvas in CSS pixels.
415
416**`height`**
417 - A `long` specifying the maximum height of the canvas in CSS pixels.
418
4f90c1d3
PO
419#### RFB.requestDesktopSize()
420
421The `RFB.requestDesktopSize()` method is used to request a change of
422the framebuffer. The capability `resize` must be set for this method to
423have any effect.
424
425Note that this is merely a request and the server may deny it.
426[`RFB.onfbresize`](#rfbonfbresize) will be called when the framebuffer
427actually changes dimensions.
428
429##### Syntax
430
431 RFB.requestDesktopSize( width, height );
432
433###### Parameters
434
435**`width`**
436 - A `long` specifying the new requested width in CSS pixels.
437
438**`height`**
439 - A `long` specifying the new requested height in CSS pixels.
440
441#### RFB.viewportChangeSize()
442
443The `RFB.viewportChangeSize()` method is used to change the size of the
444canvas rather than the underlying framebuffer.
445
0460e5fd 446This method has no effect if `RFB.clipViewport` is set to `false`.
4f90c1d3
PO
447
448##### Syntax
449
450 RFB.viewportChangeSize( width, height );
451
452###### Parameters
453
454**`width`**
455 - A `long` specifying the new width in CSS pixels.
456
457**`height`**
458 - A `long` specifying the new height in CSS pixels.