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
guacd
server - 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
guacd
server in your machine. The easiest way is using docker and docker-compose. Just calldocker-compose up -d
in the root of this project. It starts theguacd
server 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.