socketify.py/src/tests.py

80 wiersze
2.0 KiB
Python
Czysty Zwykły widok Historia

2023-01-08 19:29:26 +00:00
from socketify import App, CompressOptions, OpCode
2022-10-24 17:15:46 +00:00
2023-01-03 21:05:49 +00:00
app = App()
2022-10-24 17:15:46 +00:00
2023-01-03 21:05:49 +00:00
def extension(request, response, ws):
2022-11-08 10:17:51 +00:00
2023-01-03 21:05:49 +00:00
@request.method
async def get_user(self):
token = self.get_header("token")
self.token = token
return { "name": "Test" } if token else { "name", "Anonymous" }
2023-01-03 21:05:49 +00:00
@request.method
async def get_cart(self):
return [{ "quantity": 10, "name": "T-Shirt" }]
2022-11-01 12:30:46 +00:00
2023-01-06 19:11:19 +00:00
request.property("token", "testing")
# extensions must be registered before routes
2023-01-03 21:05:49 +00:00
app.register(extension)
2022-11-16 19:28:46 +00:00
2023-01-06 21:20:34 +00:00
def auth_middleware(res, req, data):
token = req.get_query("token")
print("token?", token)
req.token = token
return { "name": "Test" } if token else { "name", "Anonymous" }
router = app.router("")
2023-01-06 21:20:34 +00:00
@router.get("/")
def home(res, req, data=None):
# print(data)
# print("token", req.token)
# cart = await req.get_cart()
# print("cart", cart)
# user = await req.get_user()
# print("user", user)
# print("token", req.token)
res.send({"Hello": "World!"}, headers=(("X-Rate-Limit-Remaining", "10"), (b'Another-Headers', b'Value')))
2023-01-06 19:11:19 +00:00
2023-01-06 21:20:34 +00:00
2023-01-08 19:29:26 +00:00
def ws_open(ws):
print("A WebSocket got connected!")
ws.send("Hello World!", OpCode.TEXT)
def ws_message(ws, message, opcode):
print(message, opcode)
# Ok is false if backpressure was built up, wait for drain
ok = ws.send(message, opcode)
app.ws(
"/*",
{
"compression": CompressOptions.SHARED_COMPRESSOR,
"max_payload_length": 16 * 1024 * 1024,
"idle_timeout": 12,
"open": ws_open,
"message": ws_message,
"drain": lambda ws: print(
"WebSocket backpressure: %s", ws.get_buffered_amount()
),
"close": lambda ws, code, message: print("WebSocket closed"),
},
)
2023-01-03 21:05:49 +00:00
app.listen(
3000,
lambda config: print("Listening on port http://localhost:%d now\n" % config.port),
)
app.run()
2023-01-06 19:11:19 +00:00
2023-01-06 19:48:25 +00:00
2023-01-06 19:11:19 +00:00
# uws_websocket_drain_handler
# uws_websocket_subscription_handler
# uws_websocket_open_handler
# uws_websocket_message_handler
# uws_websocket_pong_handler
# uws_websocket_ping_handler
2023-01-06 19:48:25 +00:00
# uws_websocket_close_handler