Comments (4)
I've tried adding
on('error')
listeners, and I can successfully "catch" theError
on the server side, but it seems like the library automatically closes the connection when this occurs? Is this the intended behaviour or am I likely not holding it correctly?
Yes, it is. The connection is closed with the 1009
status code when this happens. See https://www.rfc-editor.org/rfc/rfc6455.html#section-7.4.1.
from ws.
Ok, thanks for clarify that I'm at least not holding it incorrectly!
I'm not familiar with the rest of the specs, do they prescribe that a server must close the connection with 1009
? Or just that if the server closes the connection due to exceeding the maximum payload size then it should use the 1009
code, and the only valid condition for returning 1009
code is due to exceeding the maximum payload size (i.e. don't use it for other reasons)
It seems unnecessary to have the server close the connection when it receives a message that is too large, when being able to handle it internally on the server as an "error" (in my case, sending back a message to the client to tell them it was too large) but continue to keep the connection open for more messages, but I'm not sure if that's just a fundamental misunderstanding of mine of the websocket protocol
from ws.
I think it is not mandatory but the behavior is common in the WebSocket implementations.
- It is a measure against a possibile DoS attack.
- If the connection is not closed, how do you handle these messages? Discarding them?
- The size is configurable.
- The endpoint is still informed of the problem via the close code.
from ws.
I'm closing this as answered.
from ws.
Related Issues (20)
- Sec-WebSocket-Accept not found HOT 7
- ws issues with custom hostname HOT 2
- WebSocketServer.address() error needs more context HOT 2
- clientTracking - the client is not destroyed if the server closes or terminates the connection. HOT 2
- The code isn't working. HOT 14
- Is there anyway to disable the websocket closeTimeout? HOT 9
- Unhappy TypeScript when using compilerOptions: module: Node16 || NodeNext HOT 1
- Support sending Blob HOT 13
- WebSocket Ping-Pong Timeout and Connection Closure Failure HOT 3
- terminate() doesnt terminate instantly HOT 6
- ws doesn't work with sveltekit's adapter-cloudflare HOT 4
- Websocket opens randomly not everytime. HOT 5
- While building websocket-api:9.4.48.v20220622 with UAT, failed. (Test Case Failure) HOT 7
- query: difference between ws.onmessage = handler and ws.on('message', handler) HOT 2
- Messages are dispatched while microtask queue is not empty HOT 6
- Uhhh, what does .isAlive do again? HOT 2
- RangeError: Invalid WebSocket frame: MASK must be set HOT 1
- Invalid dns names should not cause an uncatchable fatal exception HOT 2
- Incorrect/incomplete documentation HOT 3
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 ws.