基于AJAX的聊天

时间:2010-02-16 19:55:48

标签: ajax chat

我开发了一个基于AJAX的聊天来满足我的应用程序

就聊天而言,这就是我所做的事情

  1. 有各种聊天室,用户可以点击任何聊天室开始聊天
  2. 用户登录,一次只能是一个聊天室的一部分
  3. 我保留聊天室的数据(聊天室的状态在XML格式的数据库中,如下所示)

    <ChatRoom roomid="<roomid>">
          <Users>
               <User uid="<uid>" username="<username>" color="" heartbeat="">
               <User uid="<uid>" username="<username>" color="" heartbeat="">
               <User uid="<uid>" username="<username>" color="" heartbeat="">
          </Users>
          <Messages>
               <Message id="" from="<username>">This is message text</Message>
               <Message id="" from="<username>">This is message text</Message>
               <Message id="" from="<username>">This is message text</Message>
          </Messages>
    </ChatRoom>
    

    每当用户点击聊天室时...我基本上都会使用用户的uid向服务器发送获取请求...服务器将在后端添加用户信息,并向我发送当前用户列表在线(在线定义为在过去15分钟内有心跳的任何用户)并且还发送聊天室的最后消息ID

    现在我创建一个AJAX请求并每隔几秒发送一次请求...请求基本上发送用户已知的lastMessageID ...如果该消息ID后面有任何新的聊天室消息(messageIDs每次增加一次新的消息被添加到聊天室...而且我已经有一个环绕以限制最大消息数量== 100)

    每当服务器发送新消息时...用户的浏览器视图会更新新消息,并且用户也会更新它知道的lastMessageID

    我希望这有点清除图片

    我的问题是:

    1. 从设计角度来看......设计是怎样的
    2. 我可以在哪里进行改进
    3. 让聊天响应我发现我需要每隔2秒检查一次新消息...这可能会在服务器上产生不必要的请求负载
    4. 这是一种轮询机制......是否有通知机制......就像客户端设置回调一样......服务器在有新内容时回复回调
    5. 关于我的方法的任何评论以及我如何做事?

      我很想回答任何问题并与你们讨论细节

      非常感谢你的时间!!

1 个答案:

答案 0 :(得分:0)

将数据保存在 in 数据库中似乎有点过分,使用平面XML(或JSON!)文件或仅使用数据库表,但可能不是两者都使用。您可以使用长轮询/ Comet来处理回调/从轮询中减轻服务器上的负载。否则,看起来很健康。

请参阅此处,例如:http://en.wikipedia.org/wiki/Comet_%28programming%29