@Ragl, deixa o sistema um pouco lento? sim, deixa, mas você pode fazer o seguinte:
- Cria 3 webservices, um que fornecerá as mensagens, um que receberá as mensagens e outro que lhe falará se possui mensagens novas.
Webservice 1:
esse Webservice, você fornece o id da última mensagem recebida, e ele vai te passar as mensagens novas, e te passar o id da última mensagem informada.
Webservice 2:
esse Webservice, você fornece o id da última mensagem recebida, e ele retorna se possui mensagens novas para buscar(retornando Verdadeiro ou Falso).
Caso ele seja verdadeiro, ele executa o Webservice 1.
Webservice 3:
esse Webservice, você fornece o texto da mensagem que você quer enviar, e ele retorna verdadeiro ou falso.
(Caso verdadeiro, ok, senão, mensagem de erro).
Claro, nos dois casos você precisa informar o id da conversa, que recomendaria criar uma tabela apenas para registrar esse tipo de coisa(Tabela conversas, com, por exemplo, o id da conversa, número 1, número 2, e início da conversa).
Assim podemos fazer o servidor processar um número menor de dados e fazer o mesmo processo.
Sobre criar um webservice para cada sala, fica meio inviável, pois cada vez que é criada uma sala, você teria que criar um novo webservice, além de usar o mesmo servidor para processar, ou seja, dá o mesmo problema. Pois afinal, o problema é o processamento do servidor não aguentar, e não o arquivo sobrecarregar.