<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Perl%3A_Chat_Server</id>
	<title>Perl: Chat Server - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Perl%3A_Chat_Server"/>
	<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=Perl:_Chat_Server&amp;action=history"/>
	<updated>2026-04-20T08:02:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://lms.onnocenter.or.id/wiki/index.php?title=Perl:_Chat_Server&amp;diff=40413&amp;oldid=prev</id>
		<title>Onnowpurbo: New page: Sumber: http://poe.perl.org/?POE_Cookbook/Chat_Server   #!/usr/bin/perl  # This program is a simple chat server.  It allows multiple people to  # connect and exchange messages.  It&#039;s a ver...</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=Perl:_Chat_Server&amp;diff=40413&amp;oldid=prev"/>
		<updated>2014-05-06T22:27:49Z</updated>

		<summary type="html">&lt;p&gt;New page: Sumber: http://poe.perl.org/?POE_Cookbook/Chat_Server   #!/usr/bin/perl  # This program is a simple chat server.  It allows multiple people to  # connect and exchange messages.  It&amp;#039;s a ver...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Sumber: http://poe.perl.org/?POE_Cookbook/Chat_Server&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/perl&lt;br /&gt;
 # This program is a simple chat server.  It allows multiple people to&lt;br /&gt;
 # connect and exchange messages.  It&amp;#039;s a very simple example, but it&lt;br /&gt;
 # can be the basis of many multiuser things.&lt;br /&gt;
 use warnings;&lt;br /&gt;
 use strict;&lt;br /&gt;
 use POE;&lt;br /&gt;
 use POE::Component::Server::TCP;&lt;br /&gt;
 &lt;br /&gt;
 # Create the server on port 32080, and start it running.&lt;br /&gt;
 POE::Component::Server::TCP-&amp;gt;new(&lt;br /&gt;
   Alias              =&amp;gt; &amp;quot;chat_server&amp;quot;,&lt;br /&gt;
   Port               =&amp;gt; 32080,&lt;br /&gt;
   InlineStates       =&amp;gt; {send =&amp;gt; \&amp;amp;handle_send},&lt;br /&gt;
   ClientConnected    =&amp;gt; \&amp;amp;client_connected,&lt;br /&gt;
   ClientError        =&amp;gt; \&amp;amp;client_error,&lt;br /&gt;
   ClientDisconnected =&amp;gt; \&amp;amp;client_disconnected,&lt;br /&gt;
   ClientInput        =&amp;gt; \&amp;amp;client_input,&lt;br /&gt;
 );&lt;br /&gt;
 $poe_kernel-&amp;gt;run();&lt;br /&gt;
 exit 0;&lt;br /&gt;
 &lt;br /&gt;
 # This is a plain Perl function (not a POE event handler) that&lt;br /&gt;
 # broadcasts a message to all the users in the chat room.  The %users&lt;br /&gt;
 # hash is used to track connected people.&lt;br /&gt;
 my %users;&lt;br /&gt;
 &lt;br /&gt;
 sub broadcast {&lt;br /&gt;
   my ($sender, $message) = @_;&lt;br /&gt;
   foreach my $user (keys %users) {&lt;br /&gt;
     if ($user == $sender) {&lt;br /&gt;
       $poe_kernel-&amp;gt;post($user =&amp;gt; send =&amp;gt; &amp;quot;You $message&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
     else {&lt;br /&gt;
       $poe_kernel-&amp;gt;post($user =&amp;gt; send =&amp;gt; &amp;quot;$sender $message&amp;quot;);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 # Handle an outgoing message by sending it to the client.&lt;br /&gt;
 sub handle_send {&lt;br /&gt;
   my ($heap, $message) = @_[HEAP, ARG0];&lt;br /&gt;
   $heap-&amp;gt;{client}-&amp;gt;put($message);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Handle a connection.  Register the new user, and broadcast a message&lt;br /&gt;
 # to whoever is already connected.&lt;br /&gt;
 sub client_connected {&lt;br /&gt;
   my $session_id = $_[SESSION]-&amp;gt;ID;&lt;br /&gt;
   $users{$session_id} = 1;&lt;br /&gt;
   broadcast($session_id, &amp;quot;connected.&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # The client disconnected.  Remove them from the chat room and&lt;br /&gt;
 # broadcast a message to whoever is left.&lt;br /&gt;
 sub client_disconnected {&lt;br /&gt;
   my $session_id = $_[SESSION]-&amp;gt;ID;&lt;br /&gt;
   delete $users{$session_id};&lt;br /&gt;
   broadcast($session_id, &amp;quot;disconnected.&amp;quot;);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # The client socket has had an error.  Remove them from the chat room&lt;br /&gt;
 # and broadcast a message to whoever is left.&lt;br /&gt;
 sub client_error {&lt;br /&gt;
   my $session_id = $_[SESSION]-&amp;gt;ID;&lt;br /&gt;
   delete $users{$session_id};&lt;br /&gt;
   broadcast($session_id, &amp;quot;disconnected.&amp;quot;);&lt;br /&gt;
   $_[KERNEL]-&amp;gt;yield(&amp;quot;shutdown&amp;quot;);&lt;br /&gt;
 } &lt;br /&gt;
 &lt;br /&gt;
 # Broadcast client input to everyone in the chat room.&lt;br /&gt;
 sub client_input {&lt;br /&gt;
   my ($kernel, $session, $input) = @_[KERNEL, SESSION, ARG0];&lt;br /&gt;
   my $session_id = $session-&amp;gt;ID;&lt;br /&gt;
   broadcast($session_id, &amp;quot;said: $input&amp;quot;);&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Referensi==&lt;br /&gt;
&lt;br /&gt;
* http://poe.perl.org/?POE_Cookbook/Chat_Server&lt;/div&gt;</summary>
		<author><name>Onnowpurbo</name></author>
	</entry>
</feed>