You can try using SqlCacheDependency (if you are using SQLServer) so that the DB service will ping your ASP.NET application when the data in the watched table changes. So instead of pinging the DB , you will get a notification from the DB itself when a new message gets inserted for that user. Refer this link:
http://www.codeproject.com/KB/database/chatter.aspx
HTH,
Vivek