{"id":21816587,"url":"https://github.com/5monkeys/socker","last_synced_at":"2025-04-14T01:15:06.946Z","repository":{"id":25484448,"uuid":"28915338","full_name":"5monkeys/socker","owner":"5monkeys","description":"Redis pub/sub websocket proxy server, built on asyncio","archived":false,"fork":false,"pushed_at":"2025-04-10T12:58:24.000Z","size":64,"stargazers_count":30,"open_issues_count":5,"forks_count":4,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-14T01:14:57.165Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/5monkeys.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2015-01-07T13:21:45.000Z","updated_at":"2025-04-10T12:58:29.000Z","dependencies_parsed_at":"2025-04-10T13:44:39.999Z","dependency_job_id":"2fd7a263-f64b-4efe-b7d3-3b3c0fcab992","html_url":"https://github.com/5monkeys/socker","commit_stats":{"total_commits":49,"total_committers":4,"mean_commits":12.25,"dds":0.2857142857142857,"last_synced_commit":"ed281b688d5dcd5f2cba9b6de791c08546c56c0c"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5monkeys%2Fsocker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5monkeys%2Fsocker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5monkeys%2Fsocker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5monkeys%2Fsocker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/5monkeys","download_url":"https://codeload.github.com/5monkeys/socker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248804824,"owners_count":21164135,"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-11-27T15:35:24.608Z","updated_at":"2025-04-14T01:15:06.923Z","avatar_url":"https://github.com/5monkeys.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"=======================================================\nsocker - pubsub websocket proxy server built on asyncio\n=======================================================\n\nsocker runs as a single-process service, using asyncio for non-blocking I/O.\n\nsocker uses a single redis pubsub channel, and has its own channel\nsubscription logic, this means that you may share redis database with other\napplications.\n\nsocker runs as a single-process service. socker opens up a websocket\nserver port and establishes a redis connection. The redis connection creates\na subscription on the socker channel.\n\n\n------------\nInstallation\n------------\n\n.. code-block:: bash\n\n    pip install socker\n\n-----\nUsage\n-----\n\n.. code-block:: bash\n\n    $ socker -h\n    Start the socker websocket server\n\n    Usage:\n      socker [options]\n      socker -? | --help\n      socker --version\n\n    Options:\n      -i INTERFACE    Listening interface [default: localhost]\n      -p PORT         Listening port [default: 8765]\n\n      -v              Enable verbose output\n\n      --redis-host=HOST             Redis host [default: localhost]\n      --redis-port=PORT             Redis port [default: 6379]\n      --redis-db=DB                 Redis database [default: 0]\n      --redis-password=PASSWORD     Redis password\n\n      --logto FILE    Log output to FILE instead of console\n\n      --version       show version\n      -? --help       Show this screen\n\n\nTo publish a message to socker from another application:\n\n.. code-block:: python\n\n    from socker import Message\n\n\n    channel = 'foo.bar.42'\n    data = {\n        'yes': [\n            'yes',\n            'no',\n            'baz'\n        ]\n    }\n\n    redis_client.publish('socker', Message(channel, data))\n\nAny websocket clients subscribed to\n\n-   ``foo.*``\n-   ``foo.bar.*``\n-   ``foo.bar.42``\n\nwill receive that message.\n\n-------------------------------\nReleasing a new version to PyPi\n-------------------------------\n\n1. Bump the version in ``VERSION``.\n2. Commit the change and tag it with the new version identifier.\n3. Build a source distribution: ``python setup.py sdist``.\n4. Build a wheel: ``python setup.py bdist_wheel``.\n5. Upload the built distribution using Twine_: ``twine upload dist/*``.\n\n.. _Twine: https://github.com/pypa/twine\n\n------\nThanks\n------\n\nThanks to\n\n- https://github.com/aaugustin/websockets\n- https://github.com/jonathanslenders/asyncio-redis\n\nfor their brilliant asyncio packages.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F5monkeys%2Fsocker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F5monkeys%2Fsocker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F5monkeys%2Fsocker/lists"}