Hacker News 中文摘要

RSS订阅

基于Go WebAssembly与grdp构建的网页版RDP客户端 -- A web-based RDP client built with Go WebAssembly and grdp

文章摘要

这是一个名为grdpwasm的GitHub项目页面,主要展示了GitHub平台的各种功能,包括AI代码生成、开发者工作流和应用安全等工具,如Copilot、Codespaces和Advanced Security等。

文章总结

GitHub 项目:nakagami/grdpwasm

项目概述

这是一个基于Go WebAssembly和grdp构建的网页版RDP客户端,允许用户直接从浏览器连接Windows远程桌面服务器,无需安装插件。

架构设计

浏览器(WASM) ──WebSocket──► Go代理服务器 ──TCP──► RDP服务器 由于浏览器无法直接建立原始TCP连接,项目通过轻量级Go代理服务器将浏览器的WebSocket连接桥接到RDP服务器的TCP端口。

核心功能

  • 远程桌面显示:通过Canvas元素渲染远程桌面
  • 输入支持
    • 键盘:通过RDP扫描码转发所有标准输入
    • 鼠标:支持移动、点击和滚轮操作
  • 音频传输:通过RDPSND协议流式传输,使用Web Audio API播放(PCM 44100Hz立体声)

使用要求

  • Go 1.24或更高版本
  • 可访问的RDP服务器(Windows或兼容主机)

构建与运行

  1. 克隆仓库shell git clone https://github.com/nakagami/grdpwasm.git cd grdpwasm make all 生成文件:

    • static/main.wasm:浏览器端WASM二进制文件
    • static/wasm_exec.js:Go运行时支持文件
    • proxy/proxy:代理服务器(含静态文件服务)
  2. 启动服务shell make serve 访问 http://localhost:8080

代理服务器配置

| 参数 | 默认值 | 说明 | |------------|------------|-----------------------| | -listen | :8080 | 服务监听地址 | | -static | static | 静态文件目录 |

安全提示

  • 代理服务器默认允许任意源连接,建议:
    • 仅在可信网络运行
    • 通过nginx/Caddy等反向代理添加TLS加密
    • 外网暴露时需配置认证

开发指令

shell make wasm # 单独编译WASM make proxy # 单独编译代理 make wasm_exec # 更新wasm_exec.js make clean # 清理构建产物

许可证

GPLv3(继承自grdp项目)

(注:已过滤GitHub页面导航菜单、用户交互元素等非核心内容,保留技术实现细节和使用说明)

评论总结

总结评论内容如下:

  1. 实用性存疑
    有评论认为现有RDP客户端已足够,浏览器版必要性不足。

    • "Interesting from a technical perspective but with native RDP clients readily available... I don't see the need for it"
    • "is it work for opening rdp file from cyberark pam?"(对特定场景兼容性提出疑问)
  2. 剪贴板功能关键性
    多位用户强调剪贴板共享是核心需求,但浏览器API存在限制。

    • "clipboard is the boring nightmare of browser-RDP... paste-OUT-of-RDP needs a click each time"
    • "How well does clipboard sharing work?"(直接询问该功能表现)
  3. 技术痛点改进
    关注Alt-Tab等具体交互问题的解决:

    • "Does Alt-Tab inside the Browser Tab can be hooked to the rdp client???"(引用Guacamole的既有问题)
      有用户提出安全隔离价值:
    • "decoupling of the management interface... is a big improvement"(以Azure Bastion为例说明安全优势)
  4. 高性能开源需求
    行业变动催生对开源方案的期待:

    • "With hp shutting down anyware... the community needs an open source high performance option"(列举RustDesk等替代项目)
  5. 企业级功能拓展
    建议增加会话录制等进阶功能:

    • "If it adds session recording and SSO auth support, it can be used as an RDP jumphost"(引用Azure Bastion的成功案例)

不同观点平衡呈现:既有对基础功能(剪贴板/快捷键)的质疑,也有对企业级应用场景的期待;既提到技术局限性,也肯定开源生态的价值。