aleitner opened a new pull request, #1103: URL: https://github.com/apache/guacamole-client/pull/1103
This PR adds Web USB API integration to the Guacamole client, enabling users to redirect local USB devices from their browser to remote desktop sessions through the Guacamole protocol. Each USB device connection creates a `ManagedUSB` instance that manages the entire lifecycle of that specific device. This handles opening, claiming interfaces, polling endpoints for data, and disconnecting. These are registered with the `ManagedClient`. ## Data Flow 1) User connects a USB device via Web USB API 2) `ManagedUSB` instance is created and added to `ManagedClient.usbDevices` 3) Device interfaces are claimed and endpoint polling begins 4) Incoming USB data is base64-encoded and sent via `usbdata` messages 5) Server responses are decoded and written to appropriate USB endpoints 6) Disconnection can be initiated from either client or server side ## New proposed protocol messages ### client → server * `usbconnect`: Sent when a USB device is connected, includes device ID, vendor/product IDs, device metadata, and flattened interface/endpoint descriptors * `usbdata`: Streams data from USB device endpoints to the server with endpoint number and transfer type * `usbdisconnect`: Notifies server when a USB device is disconnected locally ### server → client * `usbdata`: Receives data from the server to write to specific USB device endpoints * `usbdisconnect`: Server-initiated disconnection requests for specific devices -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
