Comments (9)
I think that's a very natural direction for the api to take at this point.
@3rd-Eden added an emulation layer for the .onmessage, .onerror etc. events, which also has an event object rather than the message being passed as first parameter for message events. Expanding the event object to hold more information (including a flag for binary) is one thing I'd like to do. Adding addEventListener
-support, as you propose, is another.
Would it be a fair middle way to introduce a proper event object for .onmessage
and addEventListener('message', ...)
, but keep the current signature for the on('message', ...)
callback? That should ensure that most (if not all) current users suffer no breaking changes.
from ws.
This is mostly browser vs node talk. Which API do you want to adopt and support?
I would personally just keep the .addEventListener
as a regular node.js event emitter and not some odd browser based API which wraps data in silly objects.
And just use the .onmessage as a browser compatibly layer. So you have clear separation between the two different API's and not an odd mix of both
from ws.
I like that idea. This is my understanding of what you are saying:
- An
on
API which is simpler to use, more node-idiomatic, but not W3C compatible. - An
addEventListener/onmessage
API that is W3C compatible.
from ws.
@aslakhellesoy, exactly. I don't see any problems with that. I'd welcome a pullreq, or alternatively look into it myself later this week.
from ws.
@3rd-Eden I agree that the W3C API wrapping messages in an event object is a little cumbersome, but it is the standard, and making this library follow it makes it easier to write portable code.
I'm not a big fan of the onmessage
API, because it doesn't allow multiple listeners, so having a addEventListener
function that behaves like W3C WebSockets would be great. Node folks wouldn't use it anyway, they'd just use on
.
IIRC, older node versions aliased on
to addEventListener
, but this is not the case now, so the APIs wouldn't conflict.
from ws.
Correction - Node's on
is aliased to addListener
. In any case - no risk of conflicts.
http://nodejs.org/docs/latest/api/events.html#emitter.on
from ws.
So should we remove onmessage
from documntation also https://github.com/einaros/ws/blob/master/doc/ws.md#websocketonmessage ?
from ws.
@ikhattab Why would we remove it? The functionality still exists.
from ws.
@3rd-Eden oops sorry, my mistake.
from ws.
Related Issues (20)
- Dual Triggering of WebSocket Events - ws.on('message') and stream.on('data') HOT 7
- 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.