A web-based RDP client built with Go WebAssembly and grdp

  • Notifications You must be signed in to change notification settings
  • Fork 5
  • Star 171
  • Code
  • Issues 0
  • Pull requests 0
  • Actions
  • Projects
  • Security and quality 0
  • Insights
Additional navigation options  masterBranchesTagsGo to fileCodeOpen more actions menu

Folders and files

NameNameLast commit messageLast commit date

Latest commit

History

3 Commits3 Commits
proxyproxy  
staticstatic  
.gitignore.gitignore  
LICENSELICENSE  
MakefileMakefile  
README.mdREADME.md  
audio.goaudio.go  
go.modgo.mod  
go.sumgo.sum  
keymap.gokeymap.go  
main.gomain.go  
wasm_transport.gowasm_transport.go  
View all files

Repository files navigation

  • README
  • GPL-3.0 license

A web-based RDP client built with Go WebAssembly and grdp. Connect to a Windows Remote Desktop server directly from your browser — no plugins required.

Browser (WASM) ──WebSocket──► proxy (Go) ──TCP──► RDP Server

Because browsers cannot open raw TCP sockets, a lightweight Go proxy server bridges WebSocket connections from the browser to the RDP server's TCP port.

  • Go 1.24 or later
  • A reachable RDP server (Windows or any RDP-compatible host)
git clone https://github.com/nakagami/grdpwasm.git
cd grdpwasm
make all

make all produces:

Output Description
static/main.wasm Go WASM binary (runs in the browser)
static/wasm_exec.js Go runtime JS support file
proxy/proxy WebSocket-to-TCP proxy + static file server
make serve
# or equivalently:
./proxy/proxy -listen :8080 -static static

Then open http://localhost:8080 in your browser.

Flag Default Description
-listen :8080 Address and port to listen on
-static static Directory to serve static files from
  1. Open http://localhost:8080 in a browser.
  2. Fill in the connection form:
    • Host — hostname or IP address of the RDP server
    • Port — RDP port (default 3389)
    • Domain — Windows domain (leave blank for local accounts)
    • User — username
    • Password — password
    • Width / Height — initial desktop resolution
  3. Click Connect.
  4. The remote desktop appears in the canvas. Click the canvas to capture keyboard focus.
  5. Click Disconnect to end the session.

All standard keyboard input is forwarded to the remote desktop via RDP scan codes. Mouse move, button clicks, and scroll wheel are fully supported.

Note: The browser tab must have focus for keyboard events to be forwarded. Click inside the canvas area if keys stop responding.

Remote audio is streamed via RDPSND and played through the browser's Web Audio API (PCM 44100 Hz, stereo, 16-bit signed little-endian).

  • The proxy accepts connections from any origin. Run it only on a trusted network or add authentication before exposing it to the internet.
  • Credentials are transmitted from the browser to the proxy over WebSocket. Use HTTPS/WSS (put the proxy behind a TLS-terminating reverse proxy such as nginx or Caddy) when accessing it over an untrusted network.
make wasm       # rebuild only the WASM binary
make proxy      # rebuild only the proxy server
make wasm_exec  # refresh wasm_exec.js from the local Go toolchain
make clean      # remove all build artifacts

GPLv3 — see grdp LICENSE.

About

No description, website, or topics provided.

Resources

Readme

License

GPL-3.0 license

Uh oh!

There was an error while loading. Please reload this page.

Activity

Stars

171 stars

Watchers

0 watching

Forks

5 forks Report repository

Releases

No releases published

Packages 0

     

Uh oh!

There was an error while loading. Please reload this page.

Contributors

Uh oh!

There was an error while loading. Please reload this page.

Languages

  • Go 50.9%
  • HTML 47.0%
  • Makefile 2.1%