{"id":36280476,"url":"https://github.com/octamp/wamp","last_synced_at":"2026-01-11T09:03:40.199Z","repository":{"id":236680959,"uuid":"792961831","full_name":"octamp/wamp","owner":"octamp","description":"Wamp v2 Implementation","archived":false,"fork":false,"pushed_at":"2024-10-05T15:42:12.000Z","size":292,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"v1.2","last_synced_at":"2025-01-01T06:05:55.035Z","etag":null,"topics":["high-availability","messaging","openswoole","swoole","wamp","wamp-protocol","wamp-router","websocket"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/octamp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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-04-28T03:22:36.000Z","updated_at":"2024-11-28T03:30:30.000Z","dependencies_parsed_at":"2024-09-06T14:50:55.689Z","dependency_job_id":null,"html_url":"https://github.com/octamp/wamp","commit_stats":null,"previous_names":["octamp/wamp"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/octamp/wamp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octamp%2Fwamp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octamp%2Fwamp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octamp%2Fwamp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octamp%2Fwamp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/octamp","download_url":"https://codeload.github.com/octamp/wamp/tar.gz/refs/heads/v1.2","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octamp%2Fwamp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28298877,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T08:21:30.231Z","status":"ssl_error","status_checked_at":"2026-01-11T08:21:26.882Z","response_time":60,"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":["high-availability","messaging","openswoole","swoole","wamp","wamp-protocol","wamp-router","websocket"],"created_at":"2026-01-11T09:03:39.446Z","updated_at":"2026-01-11T09:03:40.188Z","avatar_url":"https://github.com/octamp.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Octamp Wamp\n\nOctamp WAMP is Router implementation of WAMP Protocol that scalable.\n\nThis was implemented using PHP OpenSwoole\n\nCurrently, the Adapter use for this is Redis.\n\n## Why Use Octamp Wamp\n\nOctamp Wamp is created using PHP with OpenSwoole instead of Ratchet / React PHP.\n\nOctamp Wamp also support Horizontal Scaling with the help of Redis.\n\nSession data and Wamp Datas will be save in Redis so that all node / server can access it.\n\n### Comparison with other Implementation\n\n|                     | Octamp Wamp | Thruway |\n|---------------------|-------------|---------|\n| Horizontal Scalling | \u0026check;     | \u0026cross; |\n| Uses OpenSwoole     | \u0026check;     | \u0026cross; |\n| Uses React PHP      | \u0026cross;     | \u0026check; |\n\n## Profile\n\nOctamp Wamp currently implemented using [Basic Profile and Advance Profile](https://wamp-proto.org/wamp_latest_ietf.html) and  of WAMP Proto.\n\n## How to use\n\n### Prerequisite\n\n- PHP 8.2\n- Redis Stack with Pub/Sub\n- Openswoole\n\n### Installation\n\n```shell\ncomposer create-project octamp/wamp ./wamp\ncd ./wamp\n```\n\nThis will create the project in wamp folder\n\nYou can update the file `/configs/adapter.yml` or copy to different file\n\nAnd update the configuration\n```yaml\nadapter:\n  type: redis\n  host: 0.0.0.0\n  port: 6379\n#  -- Uncomment the auth if you need username and password\n#  auth:\n#    username:\n#    password:\n#\n#  -- Uncomment options if you need to include other redis option such as database\n  options:\n    database: 0\n```\n\nYou can update the file `/configs/transport.yml` or copy to different file\n\nAnd update the configuration\n```yaml\ntransports:\n  - endpoint:\n      type: tcp\n      port: 8080\n    auths:\n      - method: anonymous\n        type: static\n\n# -- You can add more method, such us the examples below\n#    - method: ticket\n#      type: dynamic\n#      authenticator: testing\n#      authenticatorRealm: realm1\n#      realms:\n#        - realm1\n#    - method: wampcra\n#      type: static\n#      users:\n#        - authid: auth\n#          secret: qa2/QVmmjSx1JJuyH5EI2gMDQf+ARnfwMcLOpUfln74=\n#          role: auth\n#          salt: salt1\n#          keylen: 32\n#          iterations: 1000\n\n```\n\nYou can update the file `/configs/realms.yml` or copy to different file\n\nAnd update the configuration\n```yaml\nrealms:\n  - name: realm1\n```\n\nCopy the file `.env` to `.env.local`\n\nUpdate the necessary data\n```\nTRANSPORT_FILE=/configs/transport.yml\nADAPTER_FILE=/configs/adapter.yml\nREALM_FILE=/configs/realms.yml\n```\n\nNow run the bin/server\n\n```shell\nphp ./bin/server\n```\n\nThat will now run the server\n\n## Octamp Wamp Features\n\n- **High performance** - Uses OpenSwoole, network framework based on an event-driven, asynchronous, non-blocking I/O coroutine programming model for PHP.\n- **Scalable** - Designed for Horizontal Scalability.\n- **WAMP Basic Profile Features** - This project implements most of the basic profile features in WAMP v2.\n- **Websocket Transport** - Currently the project only implements websocket transport.\n- **Message Serializer** - Accepts JSON and MessagePack.\n\n### Message Serializer\n\n- JSON\n- MessagePack\n\n## Basic Profile Feature Support\n\n### Sessions\n| Feature                 | Supported |\n|-------------------------|-----------|\n| Session Establishment   | \u0026check;   |\n| Session Close / Closing | \u0026check;   |\n| Abort                   | \u0026check;   |\n\n### Publish and Subscribe\n| Feature                       | Supported |\n|-------------------------------|-----------|\n| Subscribe                     | \u0026check;   |\n| Unsubscribe                   | \u0026check;   |\n| Subscribe \u0026 Unsubscribe Error | \u0026check;   |\n| Publish                       | \u0026check;   |\n| Publish Error                 | \u0026check;   |\n\n### Remote Procedure Calls\n| Feature                 | Supported |\n|-------------------------|-----------|\n| Register                | \u0026check;   |\n| Unregister              | \u0026check;   |\n| Call                    | \u0026check;   |\n| Call / Invocation Error | \u0026check;   |\n| Caller Leaving          | \u0026check;   |\n| Callee Leaving          | \u0026check;   |\n\n### Other Features\n| Feature        | Supported |\n|----------------|-----------|\n| URI Validation | Partial   |\n\n\n## Advance Profile Feature Support\n\n### Authentication\n\n| Feature    | Static  | Dynamic |\n|------------|---------|---------|\n| Anonymous  | \u0026check; | \u0026check; |\n| Ticket     | \u0026check; | \u0026check; |\n| Wamp-CRA   | \u0026check; | \u0026check; |\n| Wamp-SCRA  | \u0026cross; | \u0026cross; |\n| Cryptosign | \u0026cross; | \u0026cross; |\n| TLS        | \u0026cross; | \u0026cross; |\n| Cookie     | \u0026cross; | \u0026cross; |\n\n### Authorization\n\n| Feature       | Static  |\n|---------------|---------|\n| Authorization | \u0026cross; |\n\n### RPC Features\n\n| Feature                                        | Status  |\n|------------------------------------------------|---------|\n| Progressive Call Results                       | \u0026cross; |\n| Ignoring Requests for Progressive Call Results | \u0026cross; |\n| Progressive Call Results with Timeout          | \u0026cross; |\n| Progressive Call Invocations                   | \u0026cross; |\n| Call Timeout                                   | \u0026cross; |\n| Call Canceling                                 | \u0026cross; |\n| Call Re-Routing                                | \u0026cross; |\n| Caller Identification                          | \u0026cross; |\n| Call Trustlevels                               | \u0026cross; |\n| Registration Meta API                          | \u0026cross; |\n| Pattern-based Registration                     | \u0026check; |\n| Shared Registration                            | \u0026check; |\n| Sharded Registration                           | \u0026cross; |\n| Registration Revocation                        | \u0026cross; |\n| (Interface) Procedure Reflection               | \u0026cross; |\n\n\n### PubSub Features\n\n| Feature                       | Status  |\n|-------------------------------|---------|\n| Subscriber Blackwhite Listing | \u0026check; |\n| Publisher Exclusion           | \u0026check; |\n| Publisher Identification      | \u0026check; |\n| Publication Trustlevels       | \u0026cross; |\n| Subscription Meta API         | \u0026cross; |\n| Pattern-based Subscription    | \u0026check; |\n| Sharded Subscription          | \u0026cross; |\n| Event History                 | \u0026cross; |\n| Event Retention               | \u0026cross; |\n| Subscription Revocation       | \u0026cross; |\n| Session Testament             | \u0026cross; |\n| (Interface) Topic Reflection  | \u0026cross; |\n\n### Meta API\n| Feature                | Event   | Procedure |\n|------------------------|---------|-----------|\n| Session Meta API       | \u0026check; | \u0026check;   |\n| Registration Meta API  | \u0026check; | \u0026cross;   |\n| Subscriptions Meta API | \u0026cross; | \u0026cross;   |\n\n### Others\n\n| Feature                     | Status  |\n|-----------------------------|---------|\n| Feature Announcement        | \u0026check; |\n| RawSocket Transport         | \u0026cross; |\n| Batched WebSocket transport | \u0026cross; |\n| Call Rerouting              | \u0026cross; |\n| Payload Passthru Mode       | \u0026cross; |\n\n## TODOs\n\n- [ ] Implement CBOR Serializer https://wamp-proto.org/wamp_bp_latest_ietf.html#name-serializers\n- [ ] Remove Dependencies from Thruway Common\n- [ ] Add OpenSwoole Table Adapter as Data Provider\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctamp%2Fwamp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foctamp%2Fwamp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctamp%2Fwamp/lists"}