websocket: Websocket for 'sketch' applications

websocketR Documentation

Websocket for 'sketch' applications

Description

This combines the *-Server family of functions in 'httpuv' with the transpilation functionality provided by 'sketch'.

Public fields

app

A list of functions that define the application.

server

A server handle to be used by 'stopServer'.

log

A character vector that keep tracks of all the commands sent to the browser session.

ws

A WebSocket channel to handle the communication between the R session and the browser session.

in_handler

A function to handle instructions sent by the browser session.

out_handler

A function to handle instruction sent to the browser session.

env

An environment to store variables temporarily.

port

An integer; the TCP port number.

message

TRUE or FALSE; whether to display a prompt when a server is started and when it is stopped.

connected

TRUE or FALSE; whether a connection has been established. One should ways start the WebSocket server before visiting the web page that connects to the server.

started

TRUE or FALSE; whether a server has been started. Use the startServer method to start a server.

Methods

Public methods


Method startServer()

Start a WebSocket server

Usage
websocket$startServer()

Method stopServer()

Stop a WebSocket server

Usage
websocket$stopServer()

Method listServers()

List all running WebSocket servers

Usage
websocket$listServers()

Method stopAllServers()

Stop all running WebSocket servers

Usage
websocket$stopAllServers()

Method sketch_mode()

Enter sketch mode, in which all commands go through the transpiler before reaching the browser session.

Usage
websocket$sketch_mode()

Method new_app()

Create a blank HTML page with interactive access. This function is designed for newcomers.

Usage
websocket$new_app(
  preamble = list(library = c(), script = c(), data = c()),
  ...
)
Arguments
preamble

(Optional) A named list; the preamble to include. Use the name 'lib' for arguments to load_library, 'script' for arguments to load_script and 'data' for arguments to load_data. Note that the "dom" and "websocket" modules are required and loaded by default.

...

Extra parameters to pass to source_r.

Returns

The (invisible) temporary file path to the app.


Method new()

Initialise a WebSocket connection

Usage
websocket$new(in_handler, out_handler, message = TRUE, port = 9454)
Arguments
in_handler

A function to handle incoming message, default to be print which only displays the message without any processing.

out_handler

A function to handle outgoing message, default to be compile_exprs which transpiles R commands into JavaScript commands.

message

TRUE or FALSE; whether to display a prompt when a server is started and when it is stopped.

port

An integer; the TCP port number.

Returns

A 'websocket' object.

Examples
\dontrun{
# Launch a WebSocket server
ws <- websocket$new()
ws$startServer()
ws$listServers()    # Check that a server is running

# Launch a 'sketch' application with WebSocket functionality
file <- system.file("test_files/test_websocket.R", package = "sketch")
source_r(file, debug = TRUE)   # Launch the default browser

# Enter sketch mode to send commands to the application
ws$sketch_mode()
# Within sketch mode
print("1234")
x <- 10
print(x + 1)
q()

# Back to normal mode, inspect the log and stop the server
ws$log
ws$stopServer()
ws$listServers()    # Confirm no server is running
}

Method clone()

The objects of this class are cloneable with this method.

Usage
websocket$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

Examples


## ------------------------------------------------
## Method `websocket$new`
## ------------------------------------------------

## Not run: 
# Launch a WebSocket server
ws <- websocket$new()
ws$startServer()
ws$listServers()    # Check that a server is running

# Launch a 'sketch' application with WebSocket functionality
file <- system.file("test_files/test_websocket.R", package = "sketch")
source_r(file, debug = TRUE)   # Launch the default browser

# Enter sketch mode to send commands to the application
ws$sketch_mode()
# Within sketch mode
print("1234")
x <- 10
print(x + 1)
q()

# Back to normal mode, inspect the log and stop the server
ws$log
ws$stopServer()
ws$listServers()    # Confirm no server is running

## End(Not run)

sketch documentation built on Oct. 23, 2022, 5:07 p.m.