{"id":13813713,"url":"https://github.com/Fitblip/wsstat","last_synced_at":"2025-05-15T01:31:24.472Z","repository":{"id":62589666,"uuid":"69017033","full_name":"Fitblip/wsstat","owner":"Fitblip","description":"Websocket stress testing made beautiful","archived":false,"fork":false,"pushed_at":"2024-01-23T06:21:34.000Z","size":238,"stargazers_count":175,"open_issues_count":7,"forks_count":24,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-08T23:52:14.947Z","etag":null,"topics":["devops","scaling","visualization","websockets"],"latest_commit_sha":null,"homepage":"","language":"Python","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/Fitblip.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":"2016-09-23T11:01:40.000Z","updated_at":"2025-04-03T01:08:35.000Z","dependencies_parsed_at":"2024-08-04T04:04:35.155Z","dependency_job_id":"50cbade5-9fa7-4a0b-9d75-f4c445584ec3","html_url":"https://github.com/Fitblip/wsstat","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fitblip%2Fwsstat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fitblip%2Fwsstat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fitblip%2Fwsstat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fitblip%2Fwsstat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fitblip","download_url":"https://codeload.github.com/Fitblip/wsstat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254256128,"owners_count":22040232,"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":["devops","scaling","visualization","websockets"],"created_at":"2024-08-04T04:01:26.918Z","updated_at":"2025-05-15T01:31:22.481Z","avatar_url":"https://github.com/Fitblip.png","language":"Python","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pypi.python.org/pypi/wsstat/\"\u003e\n    \u003cimg alt=\"wsstat\" src=\"https://cloud.githubusercontent.com/assets/1072598/19067433/0657350a-89d3-11e6-92ef-9e20fd8245ac.png\" width=\"546\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Websocket stress testing made beautiful\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://travis-ci.org/Fitblip/wsstat\"\u003e\u003cimg src=\"https://travis-ci.org/Fitblip/wsstat.svg?branch=master\" alt=\"Build Status\" data-canonical-src=\"https://travis-ci.org/Fitblip/wsstat.svg?branch=master\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://coveralls.io/github/Fitblip/wsstat?branch=master\"\u003e\u003cimg src=\"https://coveralls.io/repos/github/Fitblip/wsstat/badge.svg?branch=master\" alt=\"Coverage Status\" data-canonical-src=\"https://coveralls.io/repos/github/Fitblip/wsstat/badge.svg?branch=master\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://pypi.python.org/pypi/wsstat/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/wsstat.svg\" alt=\"PyPi\" data-canonical-src=\"https://img.shields.io/pypi/v/wsstat.svg\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://pypi.python.org/pypi/wsstat/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/l/wsstat.svg\" alt=\"PyPi\" data-canonical-src=\"https://img.shields.io/pypi/l/wsstat.svg\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://pypi.python.org/pypi/wsstat/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/pyversions/wsstat.svg\" alt=\"PyPi\" data-canonical-src=\"https://img.shields.io/pypi/pyversions/wsstat.svg\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n#### Hello!\n\nThis repository holds WSStat, a websocket monitoring and visualization tool written in Python 3.3+, using the great AsyncIO, Websocket, and Urwid libraries 😎 .\n\nIt aims to make diagnosing problems and understanding your websocket infrastructure easy and beautiful.\n\nThere are still a few edges and whatnot since it's fairly new, and some functionality doesn't exist (yet), but that's where I'm hoping the community can help.\n\n#### I'm actively looking for feedback\n\nThe core of WSStat was written to be modular with extensibility in mind. Want a web API to gather statistics while it runs? How about a websocket server that pushes statistics from multiple workers to one place? Threshold based alerting? Slack integration? File a ticket and we'll kick it around!\n\nIt should go without saying, but pull requests are *absolutely* welcome!\n\n#### Now, a demo\n\n![demo](https://cloud.githubusercontent.com/assets/1072598/22418901/d9f2d00e-e68f-11e6-9443-7fdd9a23ba01.gif)\n\nWhen you pass the `--demo` flag to WSStat, it will spin up an asynchronous websocket server on port `65432` point the websocket monitors to that server, allowing you to see functionality with a real websocket server.\n\n#### Installation\nInstall from pip - `pip install wsstat`\n\n**Note:** if you have python 2 and 3 installed on the same system, you have to use `pip3 install wsstat`!\n\nThe installation should be 100% straight forward and work fine. If that's not the case, please file a ticket!\n\nPlease note: WSStat currently only works on Python \u003e= 3.3, and won't install on python 2.7, which is a known limitation.\n\n#### Usage\n\nUsing wsstat is pretty straight forward, and it only has a few knobs (for now). If you want to try wsstat out and don't have a websocket infrastructure handy, you can just pass in `--demo` to have wsstat set up a server for you!\n\nOther than that, you can adjust the total number of connected clients with `-n`, the number of simultaneous sockets trying to connect at once with `-c`, or pass in an arbitrary header (for things like authentication) with `-H`.\n\n```\n$ wsstat -h\nusage: wsstat [-h] [-n TOTAL_CONNECTIONS] [-c MAX_CONNECTING_SOCKETS]\n              [-H HEADER] [--demo] [-i]\n              [websocket_url]\n\npositional arguments:\n  websocket_url         The websocket URL to hit\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -n TOTAL_CONNECTIONS, --num-clients TOTAL_CONNECTIONS\n                        Number of clients to connect - default 250\n  -c MAX_CONNECTING_SOCKETS, --max-connects MAX_CONNECTING_SOCKETS\n                        Number of connections attempted simultaneously -\n                        default 15\n  -H HEADER, --header HEADER\n                        Pass a custom header with each websocket connection\n  --demo                Start a demo websocket server and point wsstat at it\n  -i, --insecure        Don't validate SSL certificates on websocket servers\n```\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFitblip%2Fwsstat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFitblip%2Fwsstat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFitblip%2Fwsstat/lists"}