Arquitetura de uma aplicação Chat

Pessoal,

Postei sem sucesso no forúm de J2ME e Android como construir um chat. Minha dúvida não é de programação, mas sim de projeto.
Alguém já construiu um chat tipo msn ? Não sei qual seria a arquitetura ideal.

A maioria dos exemplos que encontro são via socket, mas isso não me parece muito viável para celulares.

Como o usuário vai saber que está on ? Ou quando envia uma mensagem para outro, como o servidor processa essa tarefa ?

Abs,

Don Corleone,

sugiro q vc use o protocolo de IM XMPP. Ele é o padrão usado pelo GTalk, por exemplo. Já possui API pra J2ME e vc pode tanto configurar seu próprio servidor de IM usando um servidor XMPP free como o eJabberd, ou simplesmente fazer seu programa client conectar em servidores já existentes como o GTalk. Dessa forma, o tratamento dessas questoes q vc citou, sobre quem ta on, ou qual o status (busy, available, away) fica muito mais transparente, já q o servidor fica encarregado de implementar isso.
Abaixo alguns links:

JXA (XMPP API para j2me)

eJabberd

artigo java managazine sobre uso do XMPP em j2me
http://j2me.datamazon.com/index.php?option=com_content&task=view&id=114

[]`s

wchevreuil,

Resposta profissional. Daria um excelente consigliere hehe
Valeu msm. Vou estudar esses protocolos, que desconhecia por completo. Meu objetivo entretanto é desenvolver no Android, mas acho que será a msm coisa, pois este tb é java.

Abs,