Aplicação cliente/servidor TCP/IP

Boa noite pessoal, seguinte estou desenvolvendo uma aplicacao de bate-papo…

fiz usando socket tudo funcionando perfeitamente como o nescessario, vou tentar explicar o que esta feito:

Servidor.java
fica em um loop aguardando conexoes e a cada conexao lança uma Thread para cada cliente e armazena o socket do cliente em um vetor, hora que um cliente envia uma mensagem para o servidor esta Thread lê o vetor com o socket dos outros clientes e manda a mesma mensagem para cada um deles…

ate ai tudo funcionando normal e sem mistério nenhum

agora vamos para o problema:
suponhamos que em meu servidor exista 100 clientes conectados e minha banda de up-load do servidor de 100k, se um cliente me enviar uma mensagem de 1k, eu vou enviar ela para os 99 clientes conectados gerando assim um trafego de rede, e enquanto estou distribuindo esta mensagem para os 99 clientes, algum outro envia mais uma mensagem(por exemplo, no momento em que eu recebi esta mensagem aida havia 40 mensagens para serem entregues aos clientes, com as novas mensagens este numero sobe para 139 mensagens) assim eu vou tendo um “efeito dominó” criando um LAG no meu servidor e desperdiçando banda do servidor.

Minha dúvida é a seguinte:
existe algum modo para resolver isto?
alguma API do java que ofereça melhor recurso?
algum outro protocolo de rede?

Desculpe se fui meio confuso no texto.

Desde já, fico agradecido.

O que você quer pode ser “resolvido” usando o JMS. Procure e veja como ele trabalha.

Até!

Alguem tem alguma apostila, documentacao, exemplo sobre o JMS?