From 3d3a1a0a29ec7848d5b45bd98c6730c703496d06 Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Tue, 15 Sep 2020 21:33:37 +0200 Subject: [PATCH 01/24] Update example and README.md --- README.md | 11 +++++++++++ examples/app.py | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a3d232b..9f40af3 100644 --- a/README.md +++ b/README.md @@ -68,3 +68,14 @@ Now install the dependencies and tests: To run the tests: pytest + + +## Run example + +To run the examples simply run: + +```bash +PYTHONPATH=. python examples/app.py +``` + +Before running example make sure you have all dependencies installed. \ No newline at end of file diff --git a/examples/app.py b/examples/app.py index 8909fdf..fe62c18 100644 --- a/examples/app.py +++ b/examples/app.py @@ -25,4 +25,4 @@ async def test(sid, *args, **kwargs): import uvicorn - uvicorn.run("examples:app", host='0.0.0.0', port=8000, reload=True, debug=False) + uvicorn.run("examples.app:app", host='0.0.0.0', port=8000, reload=True, debug=False) From b3ebfcc46ff70ba6647b80eda33689f99c5a7ad9 Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Tue, 15 Sep 2020 21:41:31 +0200 Subject: [PATCH 02/24] =?UTF-8?q?Delete=20dummy=20tests=20=F0=9F=98=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fastapi_socketio/__init__.py | 5 +---- tests/test_fastapi_socketio.py | 5 ----- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/fastapi_socketio/__init__.py b/fastapi_socketio/__init__.py index 8c57d9f..4bf4510 100644 --- a/fastapi_socketio/__init__.py +++ b/fastapi_socketio/__init__.py @@ -1,4 +1 @@ -from .socket_manager import SocketManager - -def example_function(): - return 1 + 1 +from .socket_manager import SocketManager \ No newline at end of file diff --git a/tests/test_fastapi_socketio.py b/tests/test_fastapi_socketio.py index 8d5ebdf..e69de29 100644 --- a/tests/test_fastapi_socketio.py +++ b/tests/test_fastapi_socketio.py @@ -1,5 +0,0 @@ -from fastapi_socketio import example_function - - -def test_example_function(): - assert example_function() == 2 From eb0b6b9c0087abf6d30932744345d6a798699dff Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Tue, 15 Sep 2020 21:43:46 +0200 Subject: [PATCH 03/24] =?UTF-8?q?Update=20test=20dependencies=20?= =?UTF-8?q?=F0=9F=A7=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pipfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Pipfile b/Pipfile index c4c9f41..f04936f 100644 --- a/Pipfile +++ b/Pipfile @@ -17,6 +17,13 @@ python-engineio = "*" [test] pytest = "==6.0.1" +fastapi = "==0.61.1" +netifaces = "==0.10.6" +pydantic = "==1.6.1" +starlette = "==0.13.6" +python-socketio = "==4.6.0" +python-engineio = "*" + [requires] python_version = "3.8" From d02fa00711743854b7ba103e961d152e5198b4a5 Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Tue, 15 Sep 2020 21:45:02 +0200 Subject: [PATCH 04/24] Add dummy test --- tests/test_fastapi_socketio.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_fastapi_socketio.py b/tests/test_fastapi_socketio.py index e69de29..603860f 100644 --- a/tests/test_fastapi_socketio.py +++ b/tests/test_fastapi_socketio.py @@ -0,0 +1,2 @@ +def test_dummy(): + assert True \ No newline at end of file From 12a2232d79864dbd37e10972f2249b1161503270 Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Tue, 15 Sep 2020 21:50:14 +0200 Subject: [PATCH 05/24] Fix deploy workflow --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 5b70770..8794c9c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -33,5 +33,5 @@ jobs: TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: | python setup.py sdist bdist_wheel - twine upload dist/* + twine upload --skip-existing dist/* From bd6628909a0516b53934fde53627df623436a8c6 Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Sat, 14 Nov 2020 12:45:51 +0100 Subject: [PATCH 06/24] Up version to 0.0.3a --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 61d9448..e6a058e 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup import os -VERSION = "0.1" +VERSION = "0.0.3a" def get_long_description(): From 608b329ac286bf185c02f22d690b30c2bdb247ad Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Sat, 14 Nov 2020 12:51:56 +0100 Subject: [PATCH 07/24] Up version to 0.0.3 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index e6a058e..09a09f5 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup import os -VERSION = "0.0.3a" +VERSION = "0.0.3" def get_long_description(): From 15c18843371959dbc745834f46d4c5422142895b Mon Sep 17 00:00:00 2001 From: "Matthew D. Scholefield" Date: Wed, 25 Nov 2020 14:33:04 -0600 Subject: [PATCH 08/24] Use cors_allowed_origins in AsyncServer This allows controlling cors in the socket server --- fastapi_socketio/socket_manager.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fastapi_socketio/socket_manager.py b/fastapi_socketio/socket_manager.py index 653d6b8..c5a57ab 100644 --- a/fastapi_socketio/socket_manager.py +++ b/fastapi_socketio/socket_manager.py @@ -1,4 +1,5 @@ import socketio +from typing import Union from fastapi import FastAPI @@ -21,10 +22,10 @@ def __init__( app: FastAPI, mount_location: str = "/ws", socketio_path: str = "socket.io", - cors_allowed_origins: list = [], + cors_allowed_origins: Union[str, list] = '*', ) -> None: # TODO: Change Cors policy based on fastapi cors Middleware - self._sio = socketio.AsyncServer(async_mode="asgi", cors_allowed_origins="*") + self._sio = socketio.AsyncServer(async_mode="asgi", cors_allowed_origins=cors_allowed_origins) self._app = socketio.ASGIApp( socketio_server=self._sio, socketio_path=socketio_path ) From ee830421dd89f898069bde6742a961b37d1bcbb6 Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Thu, 26 Nov 2020 07:20:18 +0100 Subject: [PATCH 09/24] Add CONTRIBUTORS.md and update README.md --- CONTRIBUTORS.md | 4 ++++ README.md | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 CONTRIBUTORS.md diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 0000000..1b5fa9a --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,4 @@ +# Contributors + +* [Matthew D. Scholefield](https://github.com/MatthewScholefield) - Added cors allowed origins for AsyncServer [#7](https://github.com/pyropy/fastapi-socketio/pull/7) +* [Aaron Tolman](https://github.com/tolmanam) - Reported issue with broken pip download [#5](https://github.com/pyropy/fastapi-socketio/issues/5) diff --git a/README.md b/README.md index 9f40af3..d61f3a8 100644 --- a/README.md +++ b/README.md @@ -78,4 +78,8 @@ To run the examples simply run: PYTHONPATH=. python examples/app.py ``` -Before running example make sure you have all dependencies installed. \ No newline at end of file +Before running example make sure you have all dependencies installed. + +## Contributors + +For list of contributors please reefer to CONTRIBUTORS.md file in this repository. \ No newline at end of file From e6ec802f77620cdc0f15d035482e2c69637c67a0 Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Thu, 26 Nov 2020 13:51:50 +0100 Subject: [PATCH 10/24] Upgrade to release v0.0.4 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 09a09f5..208948d 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup import os -VERSION = "0.0.3" +VERSION = "0.0.4" def get_long_description(): From e851a105f8b73ec69128ad5ee771bb3b133f353c Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Tue, 1 Dec 2020 21:23:18 +0100 Subject: [PATCH 11/24] Add missing dependencies to setup.py --- setup.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 208948d..0051d0d 100644 --- a/setup.py +++ b/setup.py @@ -28,7 +28,15 @@ def get_long_description(): license="Apache License, Version 2.0", version=VERSION, packages=["fastapi_socketio"], - install_requires=[], + install_requires=[ + "fastapi>=0.61.1", + "netifaces>=0.10.6", + "pydantic>=1.6.1", + "starlette>=0.13.6", + "python-socketio>=4.6.0", + "python-engineio", + + ], extras_require={"test": ["pytest"]}, tests_require=["fastapi-socketio[test]"], ) From c0b197e38d1bdb5bbe96318ba399a2d41e9146f6 Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Tue, 1 Dec 2020 21:24:31 +0100 Subject: [PATCH 12/24] Update package dependnecies --- Pipfile | 22 ++++---- Pipfile.lock | 141 +++++++++++++++++++++++++++------------------------ 2 files changed, 86 insertions(+), 77 deletions(-) diff --git a/Pipfile b/Pipfile index f04936f..9c4aec2 100644 --- a/Pipfile +++ b/Pipfile @@ -8,20 +8,20 @@ jedi = "*" neovim = "*" [packages] -fastapi = "==0.61.1" -netifaces = "==0.10.6" -pydantic = "==1.6.1" -starlette = "==0.13.6" -python-socketio = "==4.6.0" +fastapi = ">=0.61.1" +netifaces = ">=0.10.6" +pydantic = ">=1.6.1" +starlette = ">=0.13.6" +python-socketio = ">=4.6.0" python-engineio = "*" [test] -pytest = "==6.0.1" -fastapi = "==0.61.1" -netifaces = "==0.10.6" -pydantic = "==1.6.1" -starlette = "==0.13.6" -python-socketio = "==4.6.0" +pytest = ">=6.0.1" +fastapi = ">=0.61.1" +netifaces = ">=0.10.6" +pydantic = ">=1.6.1" +starlette = ">=0.13.6" +python-socketio = ">=4.6.0" python-engineio = "*" diff --git a/Pipfile.lock b/Pipfile.lock index f6f4147..31c7d5a 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "ccf9ac43f22dd96a47acfd5c28086eb1484a4965b19a1a004b97a5517999fc90" + "sha256": "66ea5b34a9c92727c054844c2115d439f8d99e26b1e0e81b75030d919194c0a7" }, "pipfile-spec": 6, "requires": { @@ -18,75 +18,83 @@ "default": { "fastapi": { "hashes": [ - "sha256:61ed73b4304413a2ea618d1b95ea866ee386e0e62dd8659c4f5059286f4a39c2", - "sha256:6cc31bb555dd8ca956d1d227477d661e4ac012337242a41d36214ffbda78bfe9" + "sha256:62074dd38541d9d7245f3aacbbd0d44340c53d56186c9b249d261a18dad4874b", + "sha256:8f4c64cd9cea67fb7dd175ca5015961efa572b9f43a8731014dac8929d86225f" ], "index": "pypi", - "version": "==0.61.1" + "version": "==0.62.0" }, "netifaces": { "hashes": [ - "sha256:0c4da523f36d36f1ef92ee183f2512f3ceb9a9d2a45f7d19cda5a42c6689ebe0", - "sha256:137a77c2e0a68a3e409a532fe73340c3df6a59ffe8eb565ec8b1f0a131402d09", - "sha256:2245677ee3aa1244bbd0fbf3d6e0158d38b612eba406e7be9639e7efe0371bfa", - "sha256:337f0fae970ab7a9acf5690516f7c7795f41934350cc1e8ad33c5c0331904ac0", - "sha256:369eb616a6c844987bd4df486bb5f591aa0d5552378c6831f56ed81cfc228cab", - "sha256:3b19bf224b3e46c62f5f5e65a9fbd2e9731cda09289c76aca110a3dbdf0c3332", - "sha256:48275e627ce9220acfed2e1ca1e4cf01f58940412f2aebac7995750b50232701", - "sha256:4ddf0f329d83516bba096b7eb1ad2ee354a98e2483f89ad3a590e653ece963c8", - "sha256:563a18f942a9c9f64eed27fe2a1b3dfb5866a440cdaf4d833213798699cc1789", - "sha256:5a0114933657eebe4985fdf7b0099a27ec75501901000770addca6ad7bd23008", - "sha256:60f25e5b6d2a682a394c87a6d2bf4d38c8dd8999ee32b955af88ceccaef7fe93", - "sha256:61fd2706de21aac11475c921ba0fd98af19d5280702a11c5c8e2e910765dc378", - "sha256:7925add91982cb689963cc28fb8718c006f7713b527d262e32b29b4491cec295", - "sha256:88d8fa4fcccaca07519141e95b42f52fb650bed2e8f5b29c44e22968b92b7097", - "sha256:8c3a2c7d573511507f0f29c9d1a28ce1b2a958b8d0d7a1b1966c6fd0fa5d2953", - "sha256:a0c7c19e1fb62ac6018582f72d15ac056e75c3d2ab222fb25369e7766ed67453", - "sha256:c455ca29737bf9b298408fd78a48f8fc6ddaa1f50a6eb92d814a8874412c631b", - "sha256:ef223d45b73cc96c25a6295f471106b3195d2367b7f153e43490673d89e9240e", - "sha256:f8b352247ae4b6731192d33fd35b27f247e3e4618a2d5cf65de41d46bbb53223" + "sha256:078986caf4d6a602a4257d3686afe4544ea74362b8928e9f4389b5cd262bc215", + "sha256:0c4304c6d5b33fbd9b20fdc369f3a2fef1a8bbacfb6fd05b9708db01333e9e7b", + "sha256:2dee9ffdd16292878336a58d04a20f0ffe95555465fee7c9bd23b3490ef2abf3", + "sha256:3095218b66d359092b82f07c5422293c2f6559cf8d36b96b379cc4cdc26eeffa", + "sha256:30ed89ab8aff715caf9a9d827aa69cd02ad9f6b1896fd3fb4beb998466ed9a3c", + "sha256:4921ed406386246b84465950d15a4f63480c1458b0979c272364054b29d73084", + "sha256:563a1a366ee0fb3d96caab79b7ac7abd2c0a0577b157cc5a40301373a0501f89", + "sha256:5b3167f923f67924b356c1338eb9ba275b2ba8d64c7c2c47cf5b5db49d574994", + "sha256:6d84e50ec28e5d766c9911dce945412dc5b1ce760757c224c71e1a9759fa80c2", + "sha256:755050799b5d5aedb1396046f270abfc4befca9ccba3074f3dbbb3cb34f13aae", + "sha256:75d3a4ec5035db7478520ac547f7c176e9fd438269e795819b67223c486e5cbe", + "sha256:7a25a8e28281504f0e23e181d7a9ed699c72f061ca6bdfcd96c423c2a89e75fc", + "sha256:7cc6fd1eca65be588f001005446a47981cbe0b2909f5be8feafef3bf351a4e24", + "sha256:86b8a140e891bb23c8b9cb1804f1475eb13eea3dbbebef01fcbbf10fbafbee42", + "sha256:ad10acab2ef691eb29a1cc52c3be5ad1423700e993cc035066049fa72999d0dc", + "sha256:b2ff3a0a4f991d2da5376efd3365064a43909877e9fabfa801df970771161d29", + "sha256:b47e8f9ff6846756be3dc3fb242ca8e86752cd35a08e06d54ffc2e2a2aca70ea", + "sha256:da298241d87bcf468aa0f0705ba14572ad296f24c4fda5055d6988701d6fd8e1", + "sha256:db881478f1170c6dd524175ba1c83b99d3a6f992a35eca756de0ddc4690a1940", + "sha256:f0427755c68571df37dc58835e53a4307884a48dec76f3c01e33eb0d4a3a81d7", + "sha256:f8885cc48c8c7ad51f36c175e462840f163cb4687eeb6c6d7dfaf7197308e36b", + "sha256:f911b7f0083d445c8d24cfa5b42ad4996e33250400492080f5018a28c026db2b" ], "index": "pypi", - "version": "==0.10.6" + "version": "==0.10.9" }, "pydantic": { "hashes": [ - "sha256:1783c1d927f9e1366e0e0609ae324039b2479a1a282a98ed6a6836c9ed02002c", - "sha256:2dc946b07cf24bee4737ced0ae77e2ea6bc97489ba5a035b603bd1b40ad81f7e", - "sha256:2de562a456c4ecdc80cf1a8c3e70c666625f7d02d89a6174ecf63754c734592e", - "sha256:36dbf6f1be212ab37b5fda07667461a9219c956181aa5570a00edfb0acdfe4a1", - "sha256:3fa799f3cfff3e5f536cbd389368fc96a44bb30308f258c94ee76b73bd60531d", - "sha256:40d765fa2d31d5be8e29c1794657ad46f5ee583a565c83cea56630d3ae5878b9", - "sha256:418b84654b60e44c0cdd5384294b0e4bc1ebf42d6e873819424f3b78b8690614", - "sha256:4900b8820b687c9a3ed753684337979574df20e6ebe4227381d04b3c3c628f99", - "sha256:530d7222a2786a97bc59ee0e0ebbe23728f82974b1f1ad9a11cd966143410633", - "sha256:54122a8ed6b75fe1dd80797f8251ad2063ea348a03b77218d73ea9fe19bd4e73", - "sha256:6c3f162ba175678218629f446a947e3356415b6b09122dcb364e58c442c645a7", - "sha256:b49c86aecde15cde33835d5d6360e55f5e0067bb7143a8303bf03b872935c75b", - "sha256:b5b3489cb303d0f41ad4a7390cf606a5f2c7a94dcba20c051cd1c653694cb14d", - "sha256:cf3933c98cb5e808b62fae509f74f209730b180b1e3c3954ee3f7949e083a7df", - "sha256:eb75dc1809875d5738df14b6566ccf9fd9c0bcde4f36b72870f318f16b9f5c20", - "sha256:f769141ab0abfadf3305d4fcf36660e5cf568a666dd3efab7c3d4782f70946b1", - "sha256:f8af9b840a9074e08c0e6dc93101de84ba95df89b267bf7151d74c553d66833b" + "sha256:025bf13ce27990acc059d0c5be46f416fc9b293f45363b3d19855165fee1874f", + "sha256:185e18134bec5ef43351149fe34fda4758e53d05bb8ea4d5928f0720997b79ef", + "sha256:213125b7e9e64713d16d988d10997dabc6a1f73f3991e1ff8e35ebb1409c7dc9", + "sha256:24ca47365be2a5a3cc3f4a26dcc755bcdc9f0036f55dcedbd55663662ba145ec", + "sha256:38be427ea01a78206bcaf9a56f835784afcba9e5b88fbdce33bbbfbcd7841229", + "sha256:475f2fa134cf272d6631072554f845d0630907fce053926ff634cc6bc45bf1af", + "sha256:514b473d264671a5c672dfb28bdfe1bf1afd390f6b206aa2ec9fed7fc592c48e", + "sha256:59e45f3b694b05a69032a0d603c32d453a23f0de80844fb14d55ab0c6c78ff2f", + "sha256:5b24e8a572e4b4c18f614004dda8c9f2c07328cb5b6e314d6e1bbd536cb1a6c1", + "sha256:6e3874aa7e8babd37b40c4504e3a94cc2023696ced5a0500949f3347664ff8e2", + "sha256:8d72e814c7821125b16f1553124d12faba88e85405b0864328899aceaad7282b", + "sha256:a4143c8d0c456a093387b96e0f5ee941a950992904d88bc816b4f0e72c9a0009", + "sha256:b2b054d095b6431cdda2f852a6d2f0fdec77686b305c57961b4c5dd6d863bf3c", + "sha256:c59ea046aea25be14dc22d69c97bee629e6d48d2b2ecb724d7fe8806bf5f61cd", + "sha256:d1fe3f0df8ac0f3a9792666c69a7cd70530f329036426d06b4f899c025aca74e", + "sha256:d8df4b9090b595511906fa48deda47af04e7d092318bfb291f4d45dfb6bb2127", + "sha256:dba5c1f0a3aeea5083e75db9660935da90216f8a81b6d68e67f54e135ed5eb23", + "sha256:e682f6442ebe4e50cb5e1cfde7dda6766fb586631c3e5569f6aa1951fd1a76ef", + "sha256:ecb54491f98544c12c66ff3d15e701612fc388161fd455242447083350904730", + "sha256:f5b06f5099e163295b8ff5b1b71132ecf5866cc6e7f586d78d7d3fd6e8084608", + "sha256:f6864844b039805add62ebe8a8c676286340ba0c6d043ae5dea24114b82a319e", + "sha256:ffd180ebd5dd2a9ac0da4e8b995c9c99e7c74c31f985ba090ee01d681b1c4b95" ], "index": "pypi", - "version": "==1.6.1" + "version": "==1.7.3" }, "python-engineio": { "hashes": [ - "sha256:36b33c6aa702d9b6a7f527eec6387a2da1a9a24484ec2f086d76576413cef04b", - "sha256:cfded18156862f94544a9f8ef37f56727df731c8552d7023f5afee8369be2db6" + "sha256:5a9e6086d192463b04a1428ff1f85b6ba631bbb19d453b144ffc04f530542b84", + "sha256:eab4553f2804c1ce97054c8b22cf0d5a9ab23128075248b97e1a5b2f29553085" ], "index": "pypi", - "version": "==3.13.2" + "version": "==3.14.2" }, "python-socketio": { "hashes": [ - "sha256:358d8fbbc029c4538ea25bcaa283e47f375be0017fcba829de8a3a731c9df25a", - "sha256:d437f797c44b6efba2f201867cf02b8c96b97dff26d4e4281ac08b45817cd522" + "sha256:5a21da53fdbdc6bb6c8071f40e13d100e0b279ad997681c2492478e06f370523", + "sha256:cd1f5aa492c1eb2be77838e837a495f117e17f686029ebc03d62c09e33f4fa10" ], "index": "pypi", - "version": "==4.6.0" + "version": "==4.6.1" }, "six": { "hashes": [ @@ -108,25 +116,26 @@ "develop": { "greenlet": { "hashes": [ - "sha256:1000038ba0ea9032948e2156a9c15f5686f36945e8f9906e6b8db49f358e7b52", - "sha256:133ba06bad4e5f2f8bf6a0ac434e0fd686df749a86b3478903b92ec3a9c0c90b", - "sha256:1429dc183b36ec972055e13250d96e174491559433eb3061691b446899b87384", - "sha256:1b805231bfb7b2900a16638c3c8b45c694334c811f84463e52451e00c9412691", - "sha256:3a35e33902b2e6079949feed7a2dafa5ac6f019da97bd255842bb22de3c11bf5", - "sha256:5ea034d040e6ab1d2ae04ab05a3f37dbd719c4dee3804b13903d4cc794b1336e", - "sha256:682328aa576ec393c1872615bcb877cf32d800d4a2f150e1a5dc7e56644010b1", - "sha256:6e06eac722676797e8fce4adb8ad3dc57a1bb3adfb0dd3fdf8306c055a38456c", - "sha256:7eed31f4efc8356e200568ba05ad645525f1fbd8674f1e5be61a493e715e3873", - "sha256:80cb0380838bf4e48da6adedb0c7cd060c187bb4a75f67a5aa9ec33689b84872", - "sha256:b0b2a984bbfc543d144d88caad6cc7ff4a71be77102014bd617bd88cfb038727", - "sha256:c196a5394c56352e21cb7224739c6dd0075b69dd56f758505951d1d8d68cf8a9", - "sha256:d83c1d38658b0f81c282b41238092ed89d8f93c6e342224ab73fb39e16848721", - "sha256:df7de669cbf21de4b04a3ffc9920bc8426cab4c61365fa84d79bf97401a8bef7", - "sha256:e5db19d4a7d41bbeb3dd89b49fc1bc7e6e515b51bbf32589c618655a0ebe0bf0", - "sha256:e695ac8c3efe124d998230b219eb51afb6ef10524a50b3c45109c4b77a8a3a92", - "sha256:eac2a3f659d5f41d6bbfb6a97733bc7800ea5e906dc873732e00cebb98cec9e4" + "sha256:1023d7b43ca11264ab7052cb09f5635d4afdb43df55e0854498fc63070a0b206", + "sha256:124a3ae41215f71dc91d1a3d45cbf2f84e46b543e5d60b99ecc20e24b4c8f272", + "sha256:13037e2d7ab2145300676852fa069235512fdeba4ed1e3bb4b0677a04223c525", + "sha256:3af587e9813f9bd8be9212722321a5e7be23b2bc37e6323a90e592ab0c2ef117", + "sha256:41d8835c69a78de718e466dd0e6bfd4b46125f21a67c3ff6d76d8d8059868d6b", + "sha256:4481002118b2f1588fa3d821936ffdc03db80ef21186b62b90c18db4ba5e743b", + "sha256:47825c3a109f0331b1e54c1173d4e57fa000aa6c96756b62852bfa1af91cd652", + "sha256:5494e3baeacc371d988345fbf8aa4bd15555b3077c40afcf1994776bb6d77eaf", + "sha256:75e4c27188f28149b74e7685809f9227410fd15432a4438fc48627f518577fa5", + "sha256:97f2b01ab622a4aa4b3724a3e1fba66f47f054c434fbaa551833fa2b41e3db51", + "sha256:a34023b9eabb3525ee059f3bf33a417d2e437f7f17e341d334987d4091ae6072", + "sha256:ac85db59aa43d78547f95fc7b6fd2913e02b9e9b09e2490dfb7bbdf47b2a4914", + "sha256:be7a79988b8fdc5bbbeaed69e79cfb373da9759242f1565668be4fb7f3f37552", + "sha256:bee111161420f341a346731279dd976be161b465c1286f82cc0779baf7b729e8", + "sha256:ccd62f09f90b2730150d82f2f2ffc34d73c6ce7eac234aed04d15dc8a3023994", + "sha256:d3436110ca66fe3981031cc6aff8cc7a40d8411d173dde73ddaa5b8445385e2d", + "sha256:e495096e3e2e8f7192afb6aaeba19babc4fb2bdf543d7b7fed59e00c1df7f170", + "sha256:e66a824f44892bc4ec66c58601a413419cafa9cec895e63d8da889c8a1a4fa4a" ], - "version": "==0.4.16" + "version": "==0.4.17" }, "jedi": { "hashes": [ From 05df44c51af1b70a08ce069e8e61f18d1366d380 Mon Sep 17 00:00:00 2001 From: Srdjan Stankovic Date: Tue, 1 Dec 2020 21:43:44 +0100 Subject: [PATCH 13/24] Update package version to 0.0.5 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 0051d0d..f462f7c 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup import os -VERSION = "0.0.4" +VERSION = "0.0.5" def get_long_description(): From 8e11b84a464d7f3ee258d500930762546793545a Mon Sep 17 00:00:00 2001 From: Srdjan Stankovic Date: Tue, 1 Dec 2020 21:47:03 +0100 Subject: [PATCH 14/24] Update package version to 0.0.6 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f462f7c..ef0661d 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup import os -VERSION = "0.0.5" +VERSION = "0.0.6" def get_long_description(): From c67bd2239b466b426c184610ca0ef0c2b09119dc Mon Sep 17 00:00:00 2001 From: Khiem Doan Date: Wed, 19 May 2021 17:19:58 +0700 Subject: [PATCH 15/24] Remove unused dependencies --- setup.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/setup.py b/setup.py index ef0661d..bd1bbed 100644 --- a/setup.py +++ b/setup.py @@ -30,12 +30,7 @@ def get_long_description(): packages=["fastapi_socketio"], install_requires=[ "fastapi>=0.61.1", - "netifaces>=0.10.6", - "pydantic>=1.6.1", - "starlette>=0.13.6", "python-socketio>=4.6.0", - "python-engineio", - ], extras_require={"test": ["pytest"]}, tests_require=["fastapi-socketio[test]"], From 45cbddb54fc8fdcc39a3e4ec4c95554f238bf470 Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Thu, 17 Jun 2021 13:31:31 +0200 Subject: [PATCH 16/24] Add enter and leave room functions --- fastapi_socketio/socket_manager.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/fastapi_socketio/socket_manager.py b/fastapi_socketio/socket_manager.py index c5a57ab..142da69 100644 --- a/fastapi_socketio/socket_manager.py +++ b/fastapi_socketio/socket_manager.py @@ -1,5 +1,5 @@ import socketio -from typing import Union +from typing import Optional, Union from fastapi import FastAPI @@ -87,3 +87,12 @@ def start_background_task(self): @property def sleep(self): return self._sio.sleep + + @property + def enter_room(self, sid: str, room: str, namespace: Optional[str] = None): + return self._sio.enter_room(sid, room, namespace) + + @property + def leave_room(self, sid: str, room: str, namespace: Optional[str] = None): + return self._sio.leave_room(sid, room, namespace) + From 8ab562e63a9e5ddacac050f9a2f7e28befbf51ca Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Thu, 17 Jun 2021 13:33:15 +0200 Subject: [PATCH 17/24] Update contributors --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 1b5fa9a..b3712dd 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -2,3 +2,4 @@ * [Matthew D. Scholefield](https://github.com/MatthewScholefield) - Added cors allowed origins for AsyncServer [#7](https://github.com/pyropy/fastapi-socketio/pull/7) * [Aaron Tolman](https://github.com/tolmanam) - Reported issue with broken pip download [#5](https://github.com/pyropy/fastapi-socketio/issues/5) +* [Khiem Doan](https://github.com/khiemdoan) - Helped with cleaning up old unused dependencies[#5](https://github.com/pyropy/fastapi-socketio/issues/15) \ No newline at end of file From e2016ce610d654350476604bb6c0143b88237c03 Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Thu, 17 Jun 2021 13:33:48 +0200 Subject: [PATCH 18/24] Bump package version to 0.0.7 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index bd1bbed..18efdd3 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup import os -VERSION = "0.0.6" +VERSION = "0.0.7" def get_long_description(): From 079a951ea175ff64965ef5303c81cc6829ddb61d Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Thu, 17 Jun 2021 17:11:16 +0200 Subject: [PATCH 19/24] Add async transport mode --- fastapi_socketio/socket_manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fastapi_socketio/socket_manager.py b/fastapi_socketio/socket_manager.py index 142da69..b12b54a 100644 --- a/fastapi_socketio/socket_manager.py +++ b/fastapi_socketio/socket_manager.py @@ -2,7 +2,6 @@ from typing import Optional, Union from fastapi import FastAPI - class SocketManager: """ Integrates SocketIO with FastAPI app. @@ -23,9 +22,10 @@ def __init__( mount_location: str = "/ws", socketio_path: str = "socket.io", cors_allowed_origins: Union[str, list] = '*', + async_mode: str = "asgi" ) -> None: # TODO: Change Cors policy based on fastapi cors Middleware - self._sio = socketio.AsyncServer(async_mode="asgi", cors_allowed_origins=cors_allowed_origins) + self._sio = socketio.AsyncServer(async_mode=async_mode, cors_allowed_origins=cors_allowed_origins) self._app = socketio.ASGIApp( socketio_server=self._sio, socketio_path=socketio_path ) From 9dc0b59849da2d3e2aad5c5e67a5c25d99ba949d Mon Sep 17 00:00:00 2001 From: Srdjan S Date: Thu, 17 Jun 2021 17:14:24 +0200 Subject: [PATCH 20/24] Bump package version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 18efdd3..bca6098 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup import os -VERSION = "0.0.7" +VERSION = "0.0.8" def get_long_description(): From 9251fe93746183ce423ca6d5d94114d06e4270ed Mon Sep 17 00:00:00 2001 From: Artem Kolomatskiy <38218668+Roxe322@users.noreply.github.com> Date: Thu, 28 Oct 2021 20:52:05 +0000 Subject: [PATCH 21/24] Fixed #24 invalid enter_room and leave_room --- CONTRIBUTORS.md | 3 ++- fastapi_socketio/socket_manager.py | 9 ++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index b3712dd..4c3f0d2 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -2,4 +2,5 @@ * [Matthew D. Scholefield](https://github.com/MatthewScholefield) - Added cors allowed origins for AsyncServer [#7](https://github.com/pyropy/fastapi-socketio/pull/7) * [Aaron Tolman](https://github.com/tolmanam) - Reported issue with broken pip download [#5](https://github.com/pyropy/fastapi-socketio/issues/5) -* [Khiem Doan](https://github.com/khiemdoan) - Helped with cleaning up old unused dependencies[#5](https://github.com/pyropy/fastapi-socketio/issues/15) \ No newline at end of file +* [Khiem Doan](https://github.com/khiemdoan) - Helped with cleaning up old unused dependencies[#5](https://github.com/pyropy/fastapi-socketio/issues/15) +* [Artem Kolomatskiy](https://github.com/Roxe322) - Fixed invalid usage of enter_room and leave_room[#24](https://github.com/pyropy/fastapi-socketio/issues/24) \ No newline at end of file diff --git a/fastapi_socketio/socket_manager.py b/fastapi_socketio/socket_manager.py index b12b54a..7832973 100644 --- a/fastapi_socketio/socket_manager.py +++ b/fastapi_socketio/socket_manager.py @@ -89,10 +89,9 @@ def sleep(self): return self._sio.sleep @property - def enter_room(self, sid: str, room: str, namespace: Optional[str] = None): - return self._sio.enter_room(sid, room, namespace) + def enter_room(self): + return self._sio.enter_room @property - def leave_room(self, sid: str, room: str, namespace: Optional[str] = None): - return self._sio.leave_room(sid, room, namespace) - + def leave_room(self): + return self._sio.leave_room From 367242c06d8d19aed084e2fab6a2cd5c1be3154f Mon Sep 17 00:00:00 2001 From: Artem Kolomatskiy <38218668+Roxe322@users.noreply.github.com> Date: Thu, 28 Oct 2021 21:04:42 +0000 Subject: [PATCH 22/24] Updated imports to PEP8 --- fastapi_socketio/socket_manager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fastapi_socketio/socket_manager.py b/fastapi_socketio/socket_manager.py index 7832973..083c7f6 100644 --- a/fastapi_socketio/socket_manager.py +++ b/fastapi_socketio/socket_manager.py @@ -1,5 +1,6 @@ +from typing import Union + import socketio -from typing import Optional, Union from fastapi import FastAPI class SocketManager: From 5b02d60d007e7e26a74a94ba48d700c31602e4fc Mon Sep 17 00:00:00 2001 From: Srdjan Stankovic Date: Sun, 5 Dec 2021 11:57:15 +0100 Subject: [PATCH 23/24] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index bca6098..a1261d3 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup import os -VERSION = "0.0.8" +VERSION = "0.0.9" def get_long_description(): From fc38dd16f9bd47981e098905f9b85161008d0042 Mon Sep 17 00:00:00 2001 From: kumaF Date: Thu, 24 Feb 2022 16:04:34 +0530 Subject: [PATCH 24/24] add message queue suppoert for distributed application usage --- README.md | 28 ++++++++++++++++++++++++++++ fastapi_socketio/socket_manager.py | 13 +++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d61f3a8..7522ffd 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,34 @@ async def handle_leave(sid, *args, **kwargs): ``` +### Working with distributed applications + +When working with distributed applications, it is often necessary to access the functionality of the Socket.IO from multiple processes. As a solution to the above problems, the Socket.IO server can be configured to connect to a message queue such as `Redis` or `RabbitMQ`, to communicate with other related Socket.IO servers or auxiliary workers. + +Refer this link for more details https://python-socketio.readthedocs.io/en/latest/server.html#using-a-message-queue + +```python +# app.py +import socketio + +from fastapi import FastAPI +from fastapi_socketio import SocketManager + +app = FastAPI() +redis_manager = socketio.AsyncRedisManager('redis://') + +socket_manager = SocketManager(app=app, client_manager=redis_manager) +``` + +### Emitting from external process + +```python +# emitter.py +import socketio + +external_sio = socketio.RedisManager('redis://', write_only=True) # connect to the redis queue as an external process +external_sio.emit('my event', data={'foo': 'bar'}, room='my room') # emit an event +``` ## Development To contribute to this library, first checkout the code. Then create a new virtual environment: diff --git a/fastapi_socketio/socket_manager.py b/fastapi_socketio/socket_manager.py index 083c7f6..e6be387 100644 --- a/fastapi_socketio/socket_manager.py +++ b/fastapi_socketio/socket_manager.py @@ -1,8 +1,11 @@ from typing import Union import socketio + +from socketio.asyncio_manager import AsyncManager from fastapi import FastAPI + class SocketManager: """ Integrates SocketIO with FastAPI app. @@ -23,10 +26,12 @@ def __init__( mount_location: str = "/ws", socketio_path: str = "socket.io", cors_allowed_origins: Union[str, list] = '*', - async_mode: str = "asgi" + async_mode: str = "asgi", + client_manager=None ) -> None: # TODO: Change Cors policy based on fastapi cors Middleware - self._sio = socketio.AsyncServer(async_mode=async_mode, cors_allowed_origins=cors_allowed_origins) + self._sio = socketio.AsyncServer( + async_mode=async_mode, cors_allowed_origins=cors_allowed_origins, client_manager=client_manager) self._app = socketio.ASGIApp( socketio_server=self._sio, socketio_path=socketio_path ) @@ -96,3 +101,7 @@ def enter_room(self): @property def leave_room(self): return self._sio.leave_room + + @property + def rooms(self): + return self._sio.rooms