Ajuda como implementar chat na web

Olá, gostaria de saber se alguém poderia me dar uma luz de como implementar um chat em uma web application, se alguém tem alguma dica ou conhece algum componente que facilite essa implementação do chat em um site.

Exemplo: como se fosse aqueles chats de SAC que existe em determinadas homepages.

Agradeço desde já.

Gustavo V.

eu tava brincando com esse exemplo do Deitel…

da uma olhada ve se ajuda…


package principal;

import java.io.*;
import java.net.*;
import javax.swing.JOptionPane;


class Chat
{
	public static void main(String argv[]) throws Exception
	{
		//variaveis do servidor
		String fraseCliente;
		String fraseMaiuscula;
//		String str; so servia para cpturar a porta
		String nomeDestino;
		int porta;

		//variaveis do cliente
		String ip;
		//int porta;
		String frase="a";
//		String str; so servia para cpturar a porta

		// Entradas do servidor
		//str=JOptionPane.showInputDialog("Digite a porta de comunicacao para o servidor", "6789");
		porta=6789;
		ServerSocket socketRecepcao= new ServerSocket(porta);

		// Entradas do Cliente	
		ip=JOptionPane.showInputDialog("Digite IP de Destino P/ conectar com alguem");
		nomeDestino=JOptionPane.showInputDialog("Digite o nome da pessoa destino");
	//	str=JOptionPane.showInputDialog("Digite o numero da porta","6789");
	//	porta=Integer.parseInt(str);

		while(frase!=null)
		{
			// Parte do servidor
			Socket socketConexao=socketRecepcao.accept();
			BufferedReader doCliente= new BufferedReader(new InputStreamReader(socketConexao.getInputStream()));
			DataOutputStream paraCliente= new DataOutputStream(	socketConexao.getOutputStream());
			fraseCliente= doCliente.readLine();
			JOptionPane.showMessageDialog(		null, fraseCliente,"Mensagem Recebida", 	
			JOptionPane.INFORMATION_MESSAGE);
			
   		// Inicia Cliente
			BufferedReader doUsuario= new BufferedReader(new InputStreamReader(System.in));
			Socket socketCliente=new Socket(ip, porta);
			DataOutputStream paraServidor= new DataOutputStream(socketCliente.getOutputStream());
			BufferedReader doServidor= new BufferedReader( new InputStreamReader(socketCliente.getInputStream()));
			frase= JOptionPane.showInputDialog("Digite a Mensagem");
			paraServidor.writeBytes(frase + "\n");
			socketCliente.close();
		}
		}
}