I'm trying to get data with server-sent event, what the different using
source.onmessage
vs source.addEventListener
?
I'm trying to get data with server-sent event, what the different using
source.onmessage
vs source.addEventListener
?
source.onmessage
is the built in function wrapper for EventSource
that is triggered when new data is sent to the client. It fires when no event
attribute is returned (default) and doesn't fire when it is set.
addEventListener
is similar, but differs in that it listens for a specific event
name, and triggers on its presence, allowing you to separate your functionality for multiple events. You can then parse the JSON data returned. It can be used on any event type. Have a look at this example:
source.addEventListener("login", function(e) {
// do your login specific logic
var returnedData = JSON.parse(e);
console.log(returnedData);
}, false);
This snippet will listen for a server message with event
specified as login
, then it triggers the callback function.
More info:
I assume you're talking about addEventListener('message')
vs onmessage
. They do the same thing, but I'd recommend using onmessage
because with addEventListener
, there's always a possibility of unexpectedly adding the same listener twice, e.g. due to a laggy page reload, or some hot-reload during development. In those cases the handler function could fire twice on every event, which leads to weird behaviors.