{"id":23490498,"url":"https://github.com/niradler/go-netbridge","last_synced_at":"2025-04-14T17:58:30.669Z","repository":{"id":269596979,"uuid":"907585567","full_name":"niradler/go-netbridge","owner":"niradler","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-22T23:10:39.000Z","size":57,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T17:58:28.610Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/niradler.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-12-23T23:49:44.000Z","updated_at":"2025-01-22T23:10:40.000Z","dependencies_parsed_at":"2025-02-16T11:25:01.577Z","dependency_job_id":"e92d29af-6f53-4ce1-9015-fea14bd515ce","html_url":"https://github.com/niradler/go-netbridge","commit_stats":null,"previous_names":["niradler/go-netbridge"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niradler%2Fgo-netbridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niradler%2Fgo-netbridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niradler%2Fgo-netbridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niradler%2Fgo-netbridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niradler","download_url":"https://codeload.github.com/niradler/go-netbridge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248933350,"owners_count":21185460,"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","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":[],"created_at":"2024-12-25T00:26:08.430Z","updated_at":"2025-04-14T17:58:30.658Z","avatar_url":"https://github.com/niradler.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NetBridge\n\n## Overview\n\n`netbridge` is an open-source package that provides a two-way tunnel for HTTP requests, acting as a proxy over WebSocket. This allows for seamless communication between HTTP clients and servers through a WebSocket connection.\n\n## Features\n\n- **HTTP to WebSocket Proxy**: Translates HTTP requests into WebSocket messages and vice versa.\n- **Configurable**: Easily configurable to suit different environments and use cases.\n- **Concurrent Handling**: Supports concurrent message handling to ensure efficient communication.\n- **Error Handling**: Robust error handling to manage connection issues and message parsing errors.\n\n## Installation\n\nTo install `netbridge`, use `go get`:\n\n```sh\ngo get github.com/niradler/go-netbridge\n```\n\n## Usage\n\n### Client\n\n```go\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com/niradler/netbridge/config\"\n    \"github.com/niradler/netbridge/shared\"\n)\n\nfunc main() {\n    cfg, err := config.LoadConfig()\n    if err != nil {\n        log.Fatal(err)\n    }\n    wss, err := shared.NewWebSocketConnection(cfg)\n    if err != nil {\n        log.Fatalf(\"Error creating WebSocket server: %v\", err)\n    }\n    defer wss.Close()\n\n    httpServer := shared.NewHTTPServer(cfg, wss)\n    log.Fatal(httpServer.Start(\":8081\"))\n}\n```\n\n### Server\n\n```go\npackage main\n\nimport (\n    \"log\"\n\n    \"github.com/niradler/netbridge/config\"\n    \"github.com/niradler/netbridge/shared\"\n)\n\nfunc main() {\n    cfg, err := config.LoadConfig()\n    if err != nil {\n        log.Fatal(err)\n    }\n\n    httpServer := shared.NewHTTPServer(cfg, nil)\n\n    shared.NewWebSocketServer(httpServer)\n\n    log.Fatal(httpServer.Start(\":8080\"))\n}\n```\n\n## Configuration\n\nThe configuration is managed through a configuration file. Ensure that the configuration file is correctly set up with the necessary parameters such as `SERVER_URL`, `X_Forwarded_Proto`, and `X_Forwarded_Host`.\n\n\n## Roadmap\n\nHere are some of the planned features and improvements for `netbridge`:\n\n- **Support for Large Payloads**: Implement chunking and compression to efficiently handle large payloads.\n- **Protocol Support**: Extend support to additional protocols such as SSH, HTTP/2, and gRPC.\n- **Monitoring and Logging**: Integrate monitoring and logging capabilities to track performance and diagnose issues.\n- **Automated Testing**: Develop a comprehensive suite of automated tests to ensure code quality and reliability.\n- **Infrastructure as Code**: Provide Terraform scripts and other IaC tools to deploy `netbridge` to various cloud providers\n- **Helm Charts**: Develop Helm charts for Kubernetes deployments.\n- **CI/CD Integration**: Integrate with CI/CD pipelines for automated deployment and testing.\n- **Advanced Configuration Options**: Provide more advanced configuration options for fine-tuning the behavior.\n- **Improved Documentation**: Expand the documentation with more examples and detailed explanations.\n- **Community Contributions**: Encourage and integrate contributions from the community to add new features and fix bugs.\n- **Performance Optimization**: Optimize the performance for handling a large number of concurrent connections.\n- **Load Balancing**: Add support for load balancing to distribute traffic across multiple servers.\n- **Multi Clients**: Add support for multiple clients.\n\n## Contributing\n\nContributions are welcome! Please open an issue or submit a pull request with your changes.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n## Acknowledgements\n\nSpecial thanks to all contributors and the open-source community for their support.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniradler%2Fgo-netbridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniradler%2Fgo-netbridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniradler%2Fgo-netbridge/lists"}