Skip to main content

Event Handlers

Yaj SSE provides several event handlers to manage the lifecycle and messages of your Server-Sent Events connection.

onOpen

Fired when the connection is opened for the first time.

var sse = new SSE('sse-server.php', {
onOpen: function(e){
console.log("Connection opened");
console.log(e);
}
});
tip

The onOpen event is only triggered once, even if the connection reconnects automatically.

onEnd

Fired when the connection is closed and the client will not listen for server events anymore.

var sse = new SSE('sse-server.php', {
onEnd: function(e){
console.log("Connection ended");
console.log(e);
}
});

onError

Fired when a connection error occurs.

var sse = new SSE('sse-server.php', {
onError: function(e){
console.log("Could not connect");
console.log(e);
}
});

onMessage

Fired when a message without a specific event name is received.

var sse = new SSE('sse-server.php', {
onMessage: function(e){
console.log("Message received");
console.log(e.data);
}
});

Server Side

echo "data: My Message\n";
echo "\n";

Custom Events

You can define custom event handlers that are triggered when the server sends a message with a specific event name.

Client Side

var sse = new SSE('sse-server.php', {
events: {
myEvent: function(e) {
console.log('Custom Event Received');
console.log(e.data);
},
notification: function(e) {
console.log('Notification Event');
console.log(e.data);
}
}
});

Server Side

echo "event: myEvent\n";
echo "data: My Custom Message\n";
echo "\n";
info

The event name in the client must exactly match the event name sent by the server.

Complete Example

Here's a complete example showing all event handlers:

var sse = new SSE('sse-server.php', {
onOpen: function(e) {
console.log("Connection opened");
},
onEnd: function(e) {
console.log("Connection closed");
},
onError: function(e) {
console.error("Connection error", e);
},
onMessage: function(e) {
console.log("Default message:", e.data);
},
events: {
userJoined: function(e) {
console.log("User joined:", e.data);
},
userLeft: function(e) {
console.log("User left:", e.data);
}
}
});
sse.start();