Go client library for Apache Guacamole Protocol.
Fork from deluan/bring
TODO
- Improve performance
- Optimize communication process
- Import log Library uber-go/zap
- Perfect realization
- Websocket channel
- Perfect stream processing
- Newer
- Close to new standards
- Use new treatment scheme
- More specific documentation
- Install the library in your project:
go get github.com/gemone/bring - Create a Client
with the NewClient() function.
This creates a session with the specified
guacdserver - Start the client with
go client.Start() - Get screen updates with
client.Screen() - Send keystrokes with
client.SendKey() - Send mouse updates with
client.SendMouse()
See the sample app for a working example
The API is provided by the Client struct. The documentation is a work in progress, but the API is very simple and you can take a look at all features available in the sample app provided. Here are the steps to run the app:
- You'll need a working
guacdserver in your machine. The easiest way is using docker and docker-compose. Just calldocker-compose up -din the root of this project. It starts theguacdserver and a sample headless linux with a VNC server - Run the sample app with
make run. It will connect to the linux container started by docker.
Take a look at the Makefile to learn how to run it in different scenarios.
Apache Guacamole was created with the goal of making a dedicated client unnecessary. So why create a client?!
The idea is that if you need to control a remote machine from your Go code, you can
leverage the Guacamole protocol and the guacd server as a bridge. This way you
can use any protocol supported by Guacamole (currently RDP and VNC,
with X11 coming in the future) to do screen capture and remote control of
networked servers/desktop machines from within your Go app.
It seems that the project deluan/bring is no longer maintained
and there is no relevant plan.
Therefore, try to improve the protocol to expand its use.