{"id":42165727,"url":"https://github.com/pedramcode/rhttp","last_synced_at":"2026-01-26T21:01:01.948Z","repository":{"id":65789448,"uuid":"599885045","full_name":"pedramcode/RHTTP","owner":"pedramcode","description":"Redis HTTP server","archived":false,"fork":false,"pushed_at":"2023-02-19T06:07:26.000Z","size":313,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-03-08T13:07:08.269Z","etag":null,"topics":["backend","microservice","redis"],"latest_commit_sha":null,"homepage":"","language":"C","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/pedramcode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-10T04:51:51.000Z","updated_at":"2023-02-13T20:10:04.000Z","dependencies_parsed_at":"2026-01-26T21:00:16.031Z","dependency_job_id":null,"html_url":"https://github.com/pedramcode/RHTTP","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/pedramcode/RHTTP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedramcode%2FRHTTP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedramcode%2FRHTTP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedramcode%2FRHTTP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedramcode%2FRHTTP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pedramcode","download_url":"https://codeload.github.com/pedramcode/RHTTP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedramcode%2FRHTTP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28788064,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["backend","microservice","redis"],"created_at":"2026-01-26T21:00:28.931Z","updated_at":"2026-01-26T21:01:01.920Z","avatar_url":"https://github.com/pedramcode.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RHTTP\n\n\u003eRedis HTTP server for hybrid back-end services\n\nThis server can provide a microservice backend in the shortest time and with the highest efficiency.\n\n**RHTTP** (Redis HTTP) Takes HTTP requests and publishes them into Redis. Then other servers can receive requests and make corresponding response for them, Then publishes response into Redis again and RHTTP server sends response to user.\n\n\u003cimg alt=\"RHTTP General Diagram\" src=\"docs/images/rhttp_diagram.png\" title=\"General RHTTP diagram\" width=\"100%\"/\u003e\n\n\nServices can seamlessly join/leave to RHTTP network without any interruption. RHTTP uses some mechanism I named it \"**Bat Vision**\" to detect new services or detect some service that left the network. RHTTP can send request to new services immediately after joining them and receive repsonses from them without any overhead.\n\n\n\u003cimg alt=\"RHTTP Bat vision diagram\" src=\"docs/images/bat_vision.png\" title=\"RHTTP Bat vision\" width=\"100%\"/\u003e\n\n\nActually in a constant time interval, RHTTP publishes a signal called \"**Heartbeat**\" into redis, Any service in scope can receive this signal and publishes service info into \"**Acknowledge pipe**\". Then RHTTP stores service info into database. If a defined service does not provide acknowledge for a couple of heartbeats, RHTTP will remove service from database. \n\n\n## Interfaces\n\nHere is a list of available and trusted interfaces for services to communicate with RHTTP server:\n* [NodeJS interface (npm)](https://www.npmjs.com/package/rhttp_node)\n* [Python interface (pip)](https://pypi.org/project/rhttp-python)\n\n## Requirements\n* [CArgs](https://github.com/pedramcode/cargs)\n* [HIRedis](https://github.com/redis/hiredis)\n* [Libevent](https://libevent.org/)\n* LibSSL\n* SQLite3\n* [libconfig](https://github.com/hyperrealm/libconfig)\n\n## Installation\n1. Clone repository `git clone git@github.com:pedramcode/RHTTP.git`\n2. Change directory to project root `cd RHTTP` \n3. Create \"build\" folder: `mkdir build`\n4. Change directory to build: `cd build`\n5. Run cmake `cmake ..`\n6. Make project using make command `make`\n7. Install project `sudo make install`\n\n## Usage\nAfter installation, you need to create a config file to pass it to rhttp executable, Here is an example of config file:\n\n```text\nversion: \"1.0\";\n\nserver:\n{\n\tname: \"Development RHTTP\";\n\tdebug: true;\n\n\theartbeat:\n\t{\n        interval: 1;\n        dead_server_beats: 3;\n    };\n\n\thttp:\n\t{\n\t\thost: \"127.0.0.1\";\n\t\tport: 8080;\n\t\ttimeout: 120;\n\t};\n\n\tredis:\n\t{\n\t\thost: \"127.0.0.1\";\n\t\tport: 6379;\n\t};\n};\n```\n\nIt's better save the file with \"*.cfg\" extension. For example `/etc/rhttp/rhttp.cfg`.\n\nThen run RHTTP server with this command:\n```shell\nrhttp --config /etc/rhttp/rhttp.cfg\n```\n\nor \n\n```shell\nrhttp -c /etc/rhttp/rhttp.cfg\n```\n\n## License\nThis project is licensed under the terms of the MIT License. See the [LICENSE](LICENSE.txt) file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedramcode%2Frhttp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpedramcode%2Frhttp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedramcode%2Frhttp/lists"}