Connect and control web pages by sharing JavaScript between web browsers in real-time.
This website remotely controls your web browser by sending JavaScript over WebSockets.
A custom web server maintains connections to every web browser running special client-side web apps.
Web apps are updated by sending JavaScript from one web browser to another in the background without server-side processing or storage.
Every web browser running an RCWeb app is both a web server and a web client. Multiple web browsers in the same virtual room share JavaScript actions to create powerful distributed systems.
Firewall-resistant persistent connections help build real-time distributed systems across multiple web browsers by sharing JavaScript over WebSockets in real-time.
| Feature | RCWeb | Traditional |
|---|---|---|
| CPU Usage | Low | High |
| Memory Usage | Low | High |
| Responsiveness | Instant | Delayed |
| State | Client-side | Server-side |
| Database and Storage | No data stored | Required |
| Backup | No data stored | Required |
| Privacy | No data stored | Compromised |
Here are some example apps to demonstrate how RCWeb technology can be used.
Use the remote control app to instantly send colors, images, videos, websites, apps, HTML and JavaScript to the viewer app in the same virtual room.
The viewer app displays a QR Code to help open the controls app on a mobile device.
The controls app constructs JavaScript to send to web browsers running the viewer app.
This app demonstrates using one web browser to control a remote web browser. (Asymmetric Pattern)
Supports multiple viewer apps. The controls app will control all viewer apps in the same virtual room. Multiple control apps will also control all viewer apps in the same virtual room. Other apps running in the same room may also update the viewer app. For example the gallery app includes a photo broadcast option. Photos added to the chat app will also be displayed on viewer apps active in the same room.
RCWeb makes it easy to share state between multiple web browsers. This makes it perfect for collaborative applications such as group chat and media sharing. RCWeb efficiently transfers files, such as photos, between browsers without storing them online.
This app provides a real-time chat with everyone in the same virtual room.
Chat in real time with no message delays.
Share the chat page address to invite others to join the chat.
New arrivals receive the chat history from peers.
Everyone is notified when people join and leave the chat.
Send photos between browsers securely and efficiently without storing them online.
Photos in the chat disappear when the sender leaves the chat.
Messages in the chat remain until everyone has left.
This app demonstrates real-time communication. (Symmetric pattern)
This app displays a gallery of photos and makes it easy for others to view the photos without storing them on a central server.
Select photos on your local computer to display them as thumbnails in the gallery.
Share the gallery page address to grant visitors access to the photos.
Photos will be transferred between web browsers using RCWeb technology. Photos are not stored online.
Anyone in the same virtual room can add more photos. The gallery will refresh automatically.
Photos are removed from the gallery when the page is closed or the option to remove a photo is used.
This app demonstrates sharing photos between web browsers. (Symmetric pattern)
This app displays a real-time collaborative whiteboard where multiple users can share ideas without storing them on a central server.
Write text, draw shapes, link with arrows and apply colors to convey ideas.
Upload images, resize and reposition to enhance the whiteboard.
Click and edit parts of the image. Undo and redo.
Share the whiteboard address to grant visitors access to the whiteboard.
Live updating pointer positions of all viewers.
Anyone in the same virtual room can contribute. The whiteboard will refresh automatically.
Whiteboard contents are removed when the page is closed.
This app demonstrates multiple users controlling a shared canvas.
This app is a simple drum machine that allows multiple users to change the drum loop pattern together.
Create a drum loop pattern.
Share the drum machine page address to grant others access to the same drum machine pattern.
Drum patterns will be transferred between web browsers using RCWeb technology.
Anyone in the same virtual room can change the drum pattern. The drum machine will refresh automatically.
Playback can be synchronized across multiple devices and the drum kit split between them.
This app demonstrates sharing drum patterns between web browsers. (Symmetric pattern)
This app displays a list of shared files and makes it easy to transfer them between web browsers. Even large files can be transferred by automatically splitting them into smaller chunks and reassembling them before they arrive at the destination.
Select files to share with everyone in the same virtual room.
The list of shared files updates automatically and provides links for anyone to start a file transfer.
The file is transferred between web browsers using RCWeb technology. It is not stored online.
Files are removed from the list and become inaccessible when the page is closed.
A QR Code provides quick access to the files on a mobile device.
Supports download resuming and seeking within very large files such as videos. If a multi-gigabyte video is shared, another web browser can stream the video and seek within it without transferring the whole file.
This app demonstrates sharing large files between web browsers. (Symmetric pattern)
Launch Shared FilesThis app synchronizes a text area with everyone in the same virtual room.
At startup, text is requested from a web browser in the same virtual room.
Updates to the text are sent to all web browsers in the same room.
View new text as it typed by each user.
Users can set their name and you can view where their cursor and selection are.
Text is only accessible while one or more web browsers have the page open. It is not stored online.
This app demonstrates collaboration across multiple web browsers. (Symmetric pattern)
Launch Shared NotepadRCWeb is an excellent foundation for multi-player games on a single screen. To add an additional player, simply scan a QR code using another phone. Each phone gets its own controls interface.
This pattern could work well in public spaces to engage interactivity.
This is a simple Spacewar game. Multiple players can join and battle using their mobile devices as controllers.
The game view displays a QR Code to quickly access the game from a mobile phone. Each mobile phone receives controls for their own space ship.
The control view includes buttons to fire and rotate left and rotate right. The ship automatically moves forward.
This game demonstrates one or more remote web browsers controlling a single web browser. (Asymmetric pattern)
Co-operative version of Spacewar. Everyone must shoot asteroids and enemies for points. (HTML5 canvas)
Updated Spacewar with new game play elements including multiple waves of enemies, powerups and more. (three.js)
Flappy Bird, but with many birds. Scan the QR code to add another bird controller.
Classic snake, but with many snakes. Scan the QR code to add another snake controller.
RCWeb Apps are designed to be installed as Progressive Web Apps (PWAs).
PWAs eliminate the need for app store downloads by allowing users to install to their home screen or start menu. The following RCWeb Apps are PWA enhanced.
RCWeb uses a custom Java web server. Thousands of concurrent connections are maintained using virtual threads with very little overhead. The server does not need to perform complex parsing operations on data sent between browsers because it only proxies the JavaScript as raw bytes. This makes the server very lightweight.
RCWeb uses virtual rooms to isolate groups of communicating web browsers.
A new room is created when a web browser opens the root page rcweb.live or app page for the first time. The web browser will be automatically redirected to a new room.
The new room identifier will be added to the query parameter r and be a string of 4 alphanumerics, a dash and another 4 alphanumerics. For example:
To connect multiple web browsers, they must all be in the same room. (The r query parameter must match)
An app name is featured at the beginning of the path, in this example, the chat app. The app provides an initial state before communication starts in the virtual room. RCWeb Server is stateless and apps can communicate without any changes to the server-side code.
Rooms are temporary and only facilitate communications. No data is stored on RCWeb.
Advanced real-time telemetry is built into the web server. A WebSocket connection updates stats in milliseconds.
Tools for detailed monitoring of the server, including live stats, HTTP request log tailing and WebSocket frame tailing. This information is sanitized when viewed online.
Stats HTTP Logging WebSocket Logging
The info app collects and displays telemetry data from all clients in the same room. The app shows a live updating chart of the latency to each client and detailed information about each client including:
The link above connects to the room demo-demo. Open on multiple devices to see the web browsers (clients) in the same room.
RCWeb technology will be used as a foundation for new projects.
New RCWeb Apps can be implemented without modifying any server-side code.
This is because the server acts only as a proxy for data without any parsing, processing or storage.
This design pattern is ideal for untrusted LLM generated code because it means no RCWeb app can compromise the server.
TargetR digital signage currently uses custom Android players, for example SignageNode, to display content in addition to powerful servers to upload, store and manage multimedia content.
RCWeb technology will provide a foundation for building a lightweight digital signage platform that only requires web browsers and minimal server resources.