Comments (5)
Hi. According to the spec, http.disconnect
is an asgi receive event instead of send event, so you can not close the http connection in that way. Return 500 error would be ok.
from hypercorn.
@synodriver Ho you're right ! I read the spec a bit too fast ^^
It looks like an omission to me, especially given the websocket stream has code for handling it corresponding websocket.close
So websocket.disconnect
is also an event send to the application, hence wasn't hypercorn supposed to have raise an hypercorn.utils.UnexpectedMessageError
when my application sent a websocket.disconnect
to the server ?
from hypercorn.
You can send websocket.close
which is listed in asgi spec.
Close - send event
Sent by the application to tell the server to close the connection.
If this is sent before the socket is accepted, the server must close the connection with a HTTP 403 error code (Forbidden), and not complete the WebSocket handshake; this may present on some browsers as a different WebSocket error code (such as 1006, Abnormal Closure).
If this is sent after the socket is accepted, the server must close the socket with the close code passed in the message (or 1000 if none is specified).
type (Unicode string) – "websocket.close".
code (int) – The WebSocket close code, as per the WebSocket spec. Optional; if missing defaults to 1000.
reason (Unicode string) – A reason given for the closure, can be any string. Optional; if missing or None default is empty string.
from hypercorn.
So
websocket.disconnect
is also an event send to the application, hence wasn't hypercorn supposed to have raise anhypercorn.utils.UnexpectedMessageError
when my application sent awebsocket.disconnect
to the server ?
Actually hypercorn did it here
from hypercorn.
thanks a lot @synodriver 😃 🎉
so it's websocket.close
that is the event the application send, and websocket.disconnect
(and http.disconnect
) that are send to the application !
from hypercorn.
Related Issues (20)
- Need clear documentation for configuration HOT 1
- Is Hypercorn pre-fork or post-fork? How can I integrate it with opentelemetry? HOT 4
- test_startup_failure fails with trio 0.25.0 HOT 3
- Performance issue HOT 2
- Is Hypercorn server serving up response using HTTP/2 HOT 1
- FastAPI deployed with hypercorn in GCP Cloud Run returning 503 sporadically HOT 6
- Entire hypercorn server crashes when receiving trailing data on a websocket upgrade request HOT 1
- Occassionally with HTTP2, server does not send "End Stream" flag as True when all the data has been sent in response
- Can the ASGI application be specified in the config file?
- How do I log username in access log? HOT 1
- Getting permission Error [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions when running FastAPI in IIS
- Need clarification on trusted hops HOT 1
- Reload up to date SSL certificates without restarting server?
- pytest-cov / pytest-sugar not included in pyproject.toml
- TCP server keep-alive times out even though data is being received. HOT 2
- Can we please get a new release? HOT 1
- ProxyFixMiddleware throws exception when X-Forwarded-Host is present HOT 1
- Unexpected "shutdown without Lifespan support" error on Hypercorn 0.17.3 HOT 1
- Cannot start WSGI application using Dispatcher middleware to support both FastAPI and Flash app at the same time.
- It seems hypercorn is not closing connections properly HOT 11
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hypercorn.