0.0.5 • Published 6 years ago
fastify-se v0.0.5
fastify-se
Fastify plugin for handle Server-sent Events. https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events
INSTALATION
npm i fastify-se
USAGE
const fastify_se = require("fastify-se");
const SE = new fastify_se.SE(opts);
fastify.register(SE.plugin);OPTIONS
this["seidGenerator"] = opts.seidGenerator || defaultSeidGenerator;
this["stream"] = opts.stream || stream.PassThrough;
this["streamOptions"] = opts.streamOptions || { allowHalfOpen: false };
this["autoGenerateId"] = opts.autoGenerateId || true;
this["serverTimeout"] = opts.serverTimeout || 120000;
this["clients"] = {};seidGenerator: Return aseid(Server event ID) for object key to storereplyinclientsobject,clients[seid]= reply;.stream: Stream class will be passing toreply.send(stream).streamOptions: Options for create new stream,new stream(streamOptions).autoGenerateId: Iftrue. The library will automatically createidin everysendEvent.serverTimeout: Set timeout for incoming messages, default120000msor equal to2s, inms.clients: All activereplywill be store in this object withseidas a key. Thereplywill deleted after connection closed.
METHODS
reply.sendEvent(data, ?event, ?id, ?retry):data: Data will send to client,stringorobject.event(Optional) : Event name will emit in client.id(Optional) : ID for every event action.retry(Optional) : Interval time to reconnecting to server if connection lost (In ms).
reply.sendEventBySeid(seid, data, ?event, ?id, ?retry):seid: Server event ID, you can get it onreq.seidin everyhttp.getrequest.
reply.endEvent(): To close the connection and deletereplyvalue inclientsobject with key same asreq.seidvalue.
You can see more information about data, event, id andretry in : Server-sent Events - Fields.
EXAMPLE
fastify.get("/events", function(request, reply) {
reply.sendEvent("hello world", "greeting");
// OR data with type object
reply.sendEvent({
data: {
from: "@other_people",
message: "hey guy",
date: "x-x-x-x"
},
event: "new_private_message"
});
// If you want to trigger event for other client
reply.sendEventBySeid(
"@my_friend", // Your custom seid
{
data: {
from: "@my_friend",
message: "my name is x"
},
event: "send_new_message"
}
);
// Important
reply.endEvent();
// reply.sendEvent will throw error if you call it in here
reply.sendEvent("hello world", "greeting");
});