{"id":23338307,"url":"https://github.com/abhirockzz/redis-websocket-javaee","last_synced_at":"2026-02-27T15:03:17.832Z","repository":{"id":79125401,"uuid":"85606326","full_name":"abhirockzz/redis-websocket-javaee","owner":"abhirockzz","description":"Displays the currently trending Meetup groups based on their (live) RSVPs feed","archived":false,"fork":false,"pushed_at":"2017-03-22T09:04:04.000Z","size":26,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T22:43:27.756Z","etag":null,"topics":["cdi","data-structures","ejb","javaee7","jedis","redis","sorted-sets","websocket"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abhirockzz.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":"2017-03-20T17:29:46.000Z","updated_at":"2018-03-30T02:25:50.000Z","dependencies_parsed_at":"2023-03-12T06:44:03.938Z","dependency_job_id":null,"html_url":"https://github.com/abhirockzz/redis-websocket-javaee","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abhirockzz/redis-websocket-javaee","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhirockzz%2Fredis-websocket-javaee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhirockzz%2Fredis-websocket-javaee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhirockzz%2Fredis-websocket-javaee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhirockzz%2Fredis-websocket-javaee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abhirockzz","download_url":"https://codeload.github.com/abhirockzz/redis-websocket-javaee/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhirockzz%2Fredis-websocket-javaee/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262018670,"owners_count":23245618,"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":["cdi","data-structures","ejb","javaee7","jedis","redis","sorted-sets","websocket"],"created_at":"2024-12-21T03:13:32.283Z","updated_at":"2026-02-27T15:03:12.768Z","avatar_url":"https://github.com/abhirockzz.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is an application which displays the currently trending [Meetup](https://www.meetup.com/) groups based on their (live) RSVPs feed. It's built using [Java EE 7](http://www.oracle.com/technetwork/java/javaee/tech/index.html) (uses WebSocket client \u0026 server APIs, Singleton EJB timers and CDI events to wire things up) and [Redis](https://redis.io/)\r\n\r\n## From Meetup to Redis\r\n\r\n- A WebSocket client consumes live [Meetup RSVP feed](https://www.meetup.com/meetup_api/docs/stream/2/rsvps/#websockets) \r\n- It parses each RSVP pushes the groups related data to a [Redis sorted set](https://redis.io/commands#sorted_set)\r\n- Uses [Jedis client](https://github.com/xetorthio/jedis/) for Redis and [Jackson](https://github.com/FasterXML/jackson) for POJO based JSON binding\r\n\r\n## From Redis to trending Meetup groups\r\n\r\nOnce the data is in a Redis sorted set\r\n\r\n- A Singleton EJB polls Redis to get top 10 (using `Jedis#zrevrangeByScoreWithScores`) groups as per data in the RSVPs\r\n- The information is pushed to a WebSocket endpoint via CDI\r\n- Redis sorted set does all the heavy-lifting: Java EE helps build the solution on top of all this\r\n- The WebSocket endpoint is consumed from within a HTML file which is in turn accessed by the end user\r\n\r\n## To run\r\n\r\n- clone\r\n- start Redis instance\r\n- change Redis connection details [here](https://github.com/abhirockzz/redis-websocket-javaee/blob/master/src/main/java/com/wordpress/simplydistributed/meetup/leaderboard/PingForLeaders.java#L42) and [here](https://github.com/abhirockzz/redis-websocket-javaee/blob/master/src/main/java/com/wordpress/simplydistributed/meetup/weboscket/client/MeetupRSVPsWebSocketClient.java#L25)\r\n- `mvn clean install`\r\n- deploy the WAR file in any Java EE 7 (or above) compliant container\r\n- browse to `http://\u003chost:port\u003e/meetup-trending/` e.g. `http://localhost:8080/meetup-trending/`\r\n\r\nYou should see something like this - **Score** represents the frequency of the group occurence in the RSVPs (popularity)\r\n\r\n![](https://abhirockzz.files.wordpress.com/2017/03/meetup-trending-groups1.jpg)\r\n\r\n## Credits\r\n\r\n- Inspiration was obtained [from here](https://luvit.io/blog/redis-client.html)\r\n- I am terrible at front end.. yes, even the most simplest ones. So I picked up things [from here](https://github.com/YuriyGuts/redis-websocket-leaderboard)\r\n\r\n## TODOs\r\n\r\n- CDI Producer for `Jedis` client\r\n- find other TODOs\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhirockzz%2Fredis-websocket-javaee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabhirockzz%2Fredis-websocket-javaee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhirockzz%2Fredis-websocket-javaee/lists"}