Vet inte vad ni har för mål med tanke på skalbarhet men jag tror att ni kan göra optimeringar genom att inte använda den formen av polling som ni gör, eller åtminstone sänka frekvensen något och ha det som en sista utväg. Dom flesta moderna webbläsarna har idag stöd för bättre teknik, t.ex. WebSockets eller long polling. Det underlättar om man använder ett API som döljer den underliggande tekniken, exempelvis Socket.io eller SignalR.
Jag har byggt något snarlikt åt en kund tidigare, det är ett rätt kul litet projekt att sitta med.
Har ni gjort några lasttester?
Några punkter för er att hugga tag i eller tänka på:
- tjänsten är sårbar för XSS-attacker
- skicka inte hela konversationen vid varje pollning. Ladda historiken vid onload, låt sedan klienterna hålla state.
- skicka inte Html-kod i svaren. En bättre lösning är att låta klienten ha olika mallar som laddas en gång och som klonas beroende på meddelandetyp när meddelanden trillar in.
- om en operatör avslutar en konversation fortsätter klienten att polla i all evighet. Det finns ingen koll om konversationen är aktiv eller ej.
- hur ser en operatör om en annan chattar med en användare? Det skulle kanske kunna visas i listan i nedkant.