Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- use Mojolicious::Lite;
- use EV;
- use AnyEvent::IRC qw/parse_irc_msg mk_msg prefix_nick/;
- use AnyEvent::IRC::Client;
- # Join #mojo on irc.perl.org
- my $irc = AnyEvent::IRC::Client->new;
- my $channel = "#maxson";
- $irc->connect('irc.freenode.net', 6667, {nick => "coollogbot$$", user => "coollogbotr", real => "coollogbotd"});
- $irc->send_srv(JOIN => $channel);
- get '/' => 'index';
- $irc->send_srv(PRIVMSG => $channel, 'Hi all!');
- get '/events' => sub {
- my $self = shift;
- $self->write("event:r\ndata: \n\n");
- # Emit "msg" event for every new IRC message
- $self->res->headers->content_type('text/event-stream');
- my $g = $irc->reg_cb( publicmsg => sub {
- my ( $foo, $channel, $ircmsg ) = @_;
- my $message = $ircmsg->{params}->[1];
- my $user = $ircmsg->{prefix};
- my $userid = $ircmsg->{prefix};
- print $user . '\n';
- print $userid . '\n';
- my $nick = prefix_nick($user);
- $self->write("event:user\ndata: $nick\n\n");
- $self->write("event:msg\ndata: $message\n\n");
- });
- #$self->on(join => sub {
- # $nick, $channel, $is_myself
- #}
- $self->on(finish => sub { undef $g });
- };
- app->start;
- __DATA__
- @@ index.html.ep
- <!doctype html><html>
- <head>
- <title>The Mojolicious IRC channel</title>
- <style type="text/css">
- #currentcontent
- {
- width:330px;
- height:300px;
- overflow:hidden;
- margin-left: auto; margin-right: auto;
- padding:10px;
- border:5px solid gray;
- }
- </style>
- <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
- <script>
- var events = new EventSource('<%= url_for 'events' %>');
- // Subscribe to "msg" event
- events.addEventListener('msg', function(event) {
- $("#currentcontent").prepend(document.createTextNode(event.data));
- //$('div.dd').css({'display':'inline', 'clear':'both'});
- $("#currentcontent").prepend('<br />');
- }, false);
- events.addEventListener('user', function(event) {
- $("#currentcontent").prepend(document.createTextNode(event.data));
- //$('div.dd').css({'display':'inline', 'clear':'both'});
- $("#currentcontent").prepend('<br />');
- }, false);
- events.addEventListener('r', function(event) {
- }, false);
- </script>
- </head>
- <body>
- <div id="content">Below is the current content of the chanel mojo</div>
- <div id="currentcontent"></div>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement