NAME
HTTP::ServerEvent - create strings for HTTP Server Sent Events
->as_string( %options )
return HTTP::ServerEvent->as_string(
event => "ping",
data => time(),
retry => 5000, # retry in 5 seconds if disconnected
id => $counter++,
);
Returns a string that can be sent as a server-sent event through the socket.
The allowed options are:
event
- the type of event (optional). This is the event type you will want to listen to on the other side. Newlines or null characters in the event type are treated as a fatal error.data
- the data to be sent. This can be either a string or an array reference of strings. Note that embedded newlines (either\x{0d}
,\x{0a}
or\x{0d}\x{0a}
) will be interpreted as newlines and be normalized to the\x{0d}\x{0a}
pairs that are sent over the wire.id
- the event id. If you send this, a client will send theLast-Event-Id
header when reconnecting, allowing you to send the events missed while offline. Newlines or null characters in the event id are treated as a fatal error.retry
- the amount of miliseconds to wait before reconnecting if the connection is lost. Newlines or null characters in the retry interval are treated as a fatal error.
Javascript EventSource object
To receive events on the other side, usually in a browser, you will want to instantiate an EventSource
object.
var events = new EventSource('/events');
// Subscribe to "tick" event
events.addEventListener('tick', function(event) {
var out= document.getElementById("my_console");
out.appendChild(document.createTextNode(event.data));
}, false);
Last-Event-Id Header
If you're sending events, you may want to look at the Last-Event-Id
HTTP header. This header is sent by the EventSource
object when reestablishing a connection that was intermittently lost. You can use this to bring the reconnecting client up to date with the current state instead of transmitting the complete state.
SEE ALSO
https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events
https://hacks.mozilla.org/2011/06/a-wall-powered-by-eventsource-and-server-sent-events/
http://www.html5rocks.com/en/tutorials/eventsource/basics/?ModPagespeed=noscript
REPOSITORY
The public repository of this module is http://github.com/Corion/http-serverevent.
SUPPORT
The public support forum of this module is http://perlmonks.org/.
BUG TRACKER
Please report bugs in this module via the RT CPAN bug queue at https://rt.cpan.org/Public/Dist/Display.html?Name=HTTP-ServerEvent or via mail to http-serverevent-Bugs@rt.cpan.org.
AUTHOR
Max Maischein corion@cpan.org
COPYRIGHT (c)
Copyright 2013-2013 by Max Maischein corion@cpan.org
.
LICENSE
This module is released under the same terms as Perl itself.