Advertisement
Guest User

Untitled

a guest
Dec 10th, 2011
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #!/usr/bin/env perl
  2. use Mojolicious::Lite;
  3. use EV;
  4. use AnyEvent::IRC qw/parse_irc_msg mk_msg prefix_nick/;
  5. use AnyEvent::IRC::Client;
  6.  
  7. # Join #mojo on irc.perl.org
  8. my $irc = AnyEvent::IRC::Client->new;
  9. my $channel = "#maxson";
  10. $irc->connect('irc.freenode.net', 6667, {nick => "coollogbot$$", user => "coollogbotr", real => "coollogbotd"});
  11. $irc->send_srv(JOIN => $channel);
  12. get '/' => 'index';
  13. $irc->send_srv(PRIVMSG => $channel, 'Hi all!');
  14.  
  15. get '/events' => sub {
  16. my $self = shift;
  17. $self->write("event:r\ndata: \n\n");
  18.  
  19. # Emit "msg" event for every new IRC message
  20. $self->res->headers->content_type('text/event-stream');
  21. my $g = $irc->reg_cb( publicmsg => sub {
  22. my ( $foo, $channel, $ircmsg ) = @_;
  23. my $message = $ircmsg->{params}->[1];
  24. my $user = $ircmsg->{prefix};
  25. my $userid = $ircmsg->{prefix};
  26. print $user . '\n';
  27. print $userid . '\n';
  28. my $nick = prefix_nick($user);
  29. $self->write("event:user\ndata: $nick\n\n");
  30. $self->write("event:msg\ndata: $message\n\n");
  31. });
  32. #$self->on(join => sub {
  33. # $nick, $channel, $is_myself
  34.  
  35. #}
  36. $self->on(finish => sub { undef $g });
  37. };
  38.  
  39. app->start;
  40. __DATA__
  41.  
  42. @@ index.html.ep
  43. <!doctype html><html>
  44. <head>
  45. <title>The Mojolicious IRC channel</title>
  46. <style type="text/css">
  47. #currentcontent
  48. {
  49. width:330px;
  50. height:300px;
  51. overflow:hidden;
  52. margin-left: auto; margin-right: auto;
  53. padding:10px;
  54. border:5px solid gray;
  55. }
  56. </style>
  57. <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
  58. <script>
  59. var events = new EventSource('<%= url_for 'events' %>');
  60. // Subscribe to "msg" event
  61. events.addEventListener('msg', function(event) {
  62. $("#currentcontent").prepend(document.createTextNode(event.data));
  63. //$('div.dd').css({'display':'inline', 'clear':'both'});
  64. $("#currentcontent").prepend('<br />');
  65. }, false);
  66. events.addEventListener('user', function(event) {
  67. $("#currentcontent").prepend(document.createTextNode(event.data));
  68. //$('div.dd').css({'display':'inline', 'clear':'both'});
  69. $("#currentcontent").prepend('<br />');
  70. }, false);
  71. events.addEventListener('r', function(event) {
  72. }, false);
  73. </script>
  74. </head>
  75. <body>
  76. <div id="content">Below is the current content of the chanel mojo</div>
  77. <div id="currentcontent"></div>
  78. </body>
  79. </html>
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement