{"id":15034123,"url":"https://github.com/ruzhila/websockify-go","last_synced_at":"2025-10-29T00:45:25.080Z","repository":{"id":238484696,"uuid":"796630863","full_name":"ruzhila/websockify-go","owner":"ruzhila","description":"A pure Go implementation of novnc/websockify TCP to WebSocket proxy, SSL Work!","archived":false,"fork":false,"pushed_at":"2024-05-06T11:25:46.000Z","size":5,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-03T15:50:42.503Z","etag":null,"topics":["100-line-code","campus-project","golang-examples","learning-by-doing","novnc","novnc-websockify","websocket"],"latest_commit_sha":null,"homepage":"https://ruzhila.cn/?from=github_websockify_go","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruzhila.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-06T10:26:37.000Z","updated_at":"2024-12-19T21:40:39.000Z","dependencies_parsed_at":"2024-05-06T12:54:43.616Z","dependency_job_id":null,"html_url":"https://github.com/ruzhila/websockify-go","commit_stats":null,"previous_names":["ruzhila/websockify-go"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ruzhila/websockify-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruzhila%2Fwebsockify-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruzhila%2Fwebsockify-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruzhila%2Fwebsockify-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruzhila%2Fwebsockify-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruzhila","download_url":"https://codeload.github.com/ruzhila/websockify-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruzhila%2Fwebsockify-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280088708,"owners_count":26269914,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-20T02:00:06.978Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["100-line-code","campus-project","golang-examples","learning-by-doing","novnc","novnc-websockify","websocket"],"created_at":"2024-09-24T20:24:00.018Z","updated_at":"2025-10-20T12:15:50.729Z","avatar_url":"https://github.com/ruzhila.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A Websockify with 100 lines of Golang code\n\n**websockify-go** is a pure Go implementation of [novnc/websockify](https://github.com/novnc/websockify) TCP to WebSocket proxy with improved connection handling.\n\nBy [ruzhila.cn](http://ruzhila.cn/?from=github_websockify), a campus for learning backend development through practice.\n\nThis is a tutorial code demonstrating how to use Golang write network proxy. Pull requests are welcome. 👏\n\n## Features\n- 👏 Simple and easy to use\n- 🐶 Pure Go implementation\n- 🔐 Support SSL\n- ⌨️ Support custom URL path\n- 🚪 Support custom target address\n\n## Build from source\n```shell\n$ git clone https://github.com/ruzhila/websockify-go.git\n$ cd websockify-go/cmd\n$ go build -o websockify main.go\n```\n## Install from source\n```shell\n$ go get -u github.com/ruzhila/websockify-go\n$ websockifygo -h\n```\n\n## Usage\n```shell\n$ ./websockify -h\nUsage of ./websockify:\n  -addr string\n        address to listen on (default \":8080\")\n  -cert string\n        SSL cert.pem\n  -key string\n        SSL key.pem\n  -target string\n        target address (default \"localhost:5900\")\n  -url string\n        url path to proxy, e.g. /vnc\n\n$ ./websockify -addr :8080 -target localhost:5900 -url /vnc\n```\n### Connect to the proxy, via browser\n```javascript\nconst ws = new WebSocket('ws://localhost:8080/vnc');\nws.onopen = () =\u003e console.log('connected');\nws.onmessage = (e) =\u003e console.log('message', e.data);\nws.onclose = () =\u003e console.log('closed');\n```\n\n## Build with Docker\n```shell\n$ docker build -t websockify-go .\n$ docker run -p 8080:8080 websockify-go -target localhost:5900 -url /vnc\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruzhila%2Fwebsockify-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fruzhila%2Fwebsockify-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruzhila%2Fwebsockify-go/lists"}