{"id":15903850,"url":"https://github.com/onionj/websocket-broadcasting","last_synced_at":"2025-03-20T20:31:07.337Z","repository":{"id":179983693,"uuid":"664337643","full_name":"onionj/websocket-broadcasting","owner":"onionj","description":"Multi-process Websocket broadcasting with Fiber and RabbitMQ","archived":false,"fork":false,"pushed_at":"2025-01-29T07:39:30.000Z","size":1704,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-01T00:41:37.114Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onionj.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":"2023-07-09T17:03:32.000Z","updated_at":"2025-01-29T07:39:27.000Z","dependencies_parsed_at":"2023-12-25T21:36:13.238Z","dependency_job_id":"56f2cb31-d7f6-4845-99d0-596dca76c536","html_url":"https://github.com/onionj/websocket-broadcasting","commit_stats":{"total_commits":14,"total_committers":3,"mean_commits":4.666666666666667,"dds":0.3571428571428571,"last_synced_commit":"b83bfc0f4213f88e59e37ac0374d938bcff8a165"},"previous_names":["onionj/websocket-broadcasting"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onionj%2Fwebsocket-broadcasting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onionj%2Fwebsocket-broadcasting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onionj%2Fwebsocket-broadcasting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onionj%2Fwebsocket-broadcasting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onionj","download_url":"https://codeload.github.com/onionj/websocket-broadcasting/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244084156,"owners_count":20395514,"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-10-06T12:04:34.153Z","updated_at":"2025-03-20T20:31:06.946Z","avatar_url":"https://github.com/onionj.png","language":"Go","readme":"\n# Websocket Broadcasting with Go-Fiber and RabbitMQ\n\n![websocket.gif](./docs/websocket.gif)\n\nThis project demonstrates a WebSocket broadcasting application with multi-processing capabilities using Fiber and RabbitMQ as the message broker. It allows multiple processes to handle WebSocket connections and efficiently broadcast messages to connected clients.\n\nPlease note that the project uses the following technologies:\n\n- [Go-Fiber](https://github.com/gofiber/fiber): A fast and efficient web framework for Go.\n- [RabbitMQ](https://www.rabbitmq.com/): A powerful and flexible open-source message broker.\n\n## Prerequisites\n\nBefore running the application, ensure you have the following installed:\n\n- Go (1.16 or higher): https://golang.org/dl/\n- RabbitMQ Server: https://www.rabbitmq.com/download.html\n\n## Installation\n\n1. Clone this repository to your local machine:\n\n```\ngit clone https://github.com/onionj/websocket-broadcasting.git\ncd websocket-broadcasting\n```\n\n2. Fetch the required dependencies using Go Modules:\n\n```\ngo mod download\n```\n\n## Configuration\n\nEnsure you have RabbitMQ running on your local machine or update the configuration settings in `config.json` to match your RabbitMQ server.\n\n## Usage\n\nTo run the WebSocket broadcasting application, use the following command:\n\n```\ngo run main.go\n```\n\nThe application will start, and you can visit `http://localhost:8080` in your browser to interact with the WebSocket server.\n\n## How it Works\n\nThe application uses Fiber to handle incoming WebSocket connections and messages. When a WebSocket connects, the server add it to a list.\n\nEach process has a queue bound to a FANOUT exchange. When a message is pushed to the exchange, all queues receive the message, and each process sends the message to the connected websockets.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonionj%2Fwebsocket-broadcasting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonionj%2Fwebsocket-broadcasting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonionj%2Fwebsocket-broadcasting/lists"}