Extends
Members
-
Returns whether the service is supported or not. Web sockets are required and must be accessible either through
window.WebSocket
or by setting RS.Service.websocket -
The WebSocket implementation to use. This will default to
window.WebSocket
if available. Otherwise the constructor of a W3C WebSocket API implementation must be set on this member, or an instance of such an object provided when calling RS.Service#connect. -
The protocol version negotiated with the connected RealityServer. This value is undefined if not currently connected.
-
Returns the name of the current connector. The connector encapsulates the on-the-wire protocol used to process commands. Currently one connector is available
WS
which indicates that commands are processed using WebSocket requests. -
Whether debug mode is used for the WebSocket protocol. When
true
commands and responses are sent in string mode (where possible) for easier debugging over the WebSocket connection. Defaults tofalse
. -
The name of the scope to execute commands in. By default the service executes all commands in the global scope. For convenience it is possible to change this default scope so it is not necessary to manually add
use_scope
commands to every call. Note this scope is only used for commands executed directly on the service. Commands executed on streams are executed in the scope of the underlying render loop.The value
undefined
is used to represent the global scope.The scope must already exist before being set.
-
If set to
true
then events are emitted for each command execution providing details of the command request and response. Note that if enabled this will cause responses to be sent for every command, not just ones that specify thewant_response
flag. Also note that this is not meant as a replacement for the promise based response handling system but as a debug tool. Should not be enabled in production.
Methods
-
Associates the given scope with this service connection. When the connection closes the scope will automatically be removed from RealityServer.
Name Type Description scope_name
String The name of the scope to associate with the service.
Returns:
Type Description Promise A promise that resolves when the scope has been associated or rejects on error. -
Closes the WebSocket connection
Name Type Default Description code
Number 1000 optional Code indicating the reason for closing the connection. Default value indicates normal closure
reason
String User request optional Explanation of why we are closing, must be less than 128 UTF8 bytes.
Fires:
-
Connects to RealityServer and performs the initial handshake to ensure streaming functionality is available. Returns a
Promise
that resolves when connected. The promise will reject in the following circumstances:- Websockets are not supported
- Creation of the WebSocket instance fails.
- The RealityServer connection fails.
- Invalid RealityServer handshake.
- The connected RealityServer does not support the required WebSocket protocol version.
Name Type Default Description url
String | Object If a string then the web service URL to connect to. Typically of the form
ws[s]://HOST::PORT/service/
. If not a string then must be an object that implements the W3C WebSocket API interface.extra_constructor_args
Array null optional Extra list of arguments to be passed to the WebSocket constructor after the protocols parameter.
Returns:
Type Description Promise A promise that resolves when the WebSocket is connected. -
create_stream ()RS.Stream
-
Creates a stream that can be used to receive rendered images from a render loop. A single web socket connection can stream from multiple render loops simultaneously however a given render loop can only be streamed once over a given web socket. Returns a RS.Stream which can then have a stream started on it.
Returns:
Type Description RS.Stream A stream instance -
Executes a single command and returns a
Promise
that resolves to an iterable. The iterable will contain a single result which will be the result of the command or a RS.Command_error.The promise will reject in the following circumstances:
- there is no WebSocket connection.
- the WebSocket connection has not started (IE: RS.Service#connect has not yet resolved).
Name Type Description command
RS.Command The command to execute.
options
Object optional Name Type Description want_response
Boolean optional If
true
then the returned promise resolves to the response of the command. Iffalse
then the promise resolves immediately toundefined
.scope_name
String optional If provided then commands are executed in this scope. If not the default service scope is used.
longrunning
Boolean optional A hint as to whether the commands are expected to be long running or not. Long running commands are executed asynchronously on the server to ensure they do not tie up the web socket connection. Note this hint is only supported in protocol version 7 and above (RealityServer 6.2 3938.141 or later). See "Long running commands" in Concepts for more details.
Fires:
Returns:
Type Description Promise A Promise
that resolves to an iterable. -
queue_commands (options)RS.Command_queue
-
Returns a RS.Command_queue that can be used to queue up a series of commands to be executed.
Name Type Description options
Object optional Name Type Description scope_name
String optional If provided then commands are executed in this scope. If not the default service scope is used.
longrunning
Boolean optional A hint as to whether the commands are expected to be long running or not. Long running commands are executed asynchronously on the server to ensure they do not tie up the web socket connection. Note this hint is only supported in protocol version 7 and above (RealityServer 6.2 3938.141 or later). See "Long running commands" in Concepts for more details.
Returns:
Type Description RS.Command_queue The command queue to add commands to and then execute. -
Sends a single command and returns an
Array
ofPromises
that will resolve with the responses. The array will contain up to 1Promise
.- if
want_response
istrue
then the firstPromise
will resolve to the result of the command or a RS.Command_error. - otherwise the array will be empty.
Name Type Description command
RS.Command The command to execute.
options
Object optional Name Type Description want_response
Boolean optional If
true
then thereponses
promise resolves to the response of the command. Iffalse
then the promise resolves immediately to undefined.scope_name
String optional If provided then commands are executed in this scope. If not the default service scope is used.
longrunning
Boolean optional A hint as to whether the commands are expected to be long running or not. Long running commands are executed asynchronously on the server to ensure they do not tie up the web socket connection. Note this hint is only supported in protocol version 7 and above (RealityServer 6.2 3938.141 or later). See "Long running commands" in Concepts for more details.
Fires:
Throws:
-
This call will throw an error in the following circumstances:
- there is no WebSocket connection.
- the WebSocket connection has not started (IE: RS.Service#connect has not yet resolved).
- Type
- RS.Error
Returns:
Type Description Array.<Promise> An Array
ofPromises
. These promises will not reject. - if
-
Sets the maximum transfer rate for this stream. Manually setting a maximum rate will be enforced on the server side so a stream will not generate more than the given amount of bandwidth. Automatic rate control will attempt to fill the available bandwidth, but not flood the connection. Note that even if a manual rate is set flood control will still be enabled so setting a max rate larger than the available bandwidth will not overwhelm the connection. Rate control is implemented using frame dropping rather than adjusting image compression settings.
The returned promise will reject in the following circumstances:
- there is no WebSocket connection.
- the WebSocket connection has not started (IE: RS.Service#connect has not yet resolved).
- Setting the max rate failed.
Name Type Description max_rate
Number The maximum rate in bytes per second. Set to
0
to use automatic rate control (the default) or-1
to disable rate control entirely.Returns:
Type Description Promise A promise that resolves when the max rate has been set. -
Returns
true
if we are currently streaming the given render loop.Name Type Description render_loop_name
String The name of the render loop to check.
Returns:
Type Description Boolean true
if streaming,false
if not or unknown.
Type Definitions
-
Data emitted when progress has been made during command execution.
Properties:
Name Type Description id
String The id registered when the command was executed.
value
Number 0 to 100 value indicating progress.
area
String The area of execution the command is currently in.
message
String A message associated with the progress event.
Events
-
Close event.
Emitted when the web socket connection is closed.
Name Type Description event
CloseEvent The underlying WebSocket close event. See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent
-
Command request event.
Emitted when command requests are sent and RS.Service#log_commands is enabled.
Name Type Description event
Object The request event.
Name Type Description id
Number The request ID. There will be a corresponding RS.Service#event:command_results event emitted with this ID.
commands
Array The commands to be executed, note this will include any commands prepended by the service for scope management.
render_loop_name
String optional If these commands are to be executed on a stream then the name of ther render loop associated with the stream.
-
Command response event.
Emitted when command responses are received and RS.Service#log_commands is enabled.
Name Type Description event
Object The response event.
Name Type Description id
Number The request ID that these responses are for.
results
Array The command results, note this will include results for any prepended scope commands.
commands
Array The commands these results are for.
render_loop_name
String optional If these commands were executed on a stream then the name of ther render loop associated with the stream.
-
Error event.
Emitted when the web socket connection encounters an error.
Name Type Description event
Event The underlying WebSocket error event. See https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/onerror
-
Open event.
Emitted when the web socket connection is opened.
Name Type Description event
Event The underlying WebSocket open event. See https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/onopen
-
Progress event.
Fired whenever a command has completed some measure of progress. This event will be fired on RS.Service for all streams.
Name Type Description progress
RS.Service~Progress_data The command progress data