将聊天服务器实现为WebService

时间:2009-05-24 08:19:00

标签: java web-services chat

我有一个学校项目,我必须在其中实现一个聊天应用程序,其服务器将是一个java Web服务。

问题是我一直认为Web服务是一种调用远程功能的方式,我不知道如何在Web服务上保持“会话”活动,也不知道如何跟踪所有的目前正在聊天,房间等的人。

4 个答案:

答案 0 :(得分:6)

据我所知,聊天服务器应该在初始连接后知道其客户端,并将每个客户端消息发送给所有客户端。这肯定需要某种会话维护。我认为正确的做法如下:

  1. 客户端调用Web服务“握手”并提供一些最小的识别详细信息。
  2. 服务器返回包含唯一客户端标识符的确认。
  3. 客户端调用Web服务“消息”并发送新消息及其标识符。
  4. 服务器通过标识符识别客户端,将消息分发给所有客户端。
  5. 我不确定消息分发应该如何工作,因为Web服务本质上是一种拉服务而不是推送。也许客户端应该公开自己的Web服务以供服务器调用。

    希望这有帮助,

    Yuval = 8 - )

答案 1 :(得分:1)

您可以考虑实施COMET解决方案。这将有效地为您提供推送通信,从而消除延迟,这是聊天应用程序的一个非常好的功能。

如果您想购买黄金,请考虑实施更多高级功能:

  • 拼写检查
  • 自动转换为链接的网址/电子邮件地址
  • 单独的聊天室
  • 主持人功能(终止聊天,踢用户)
  • 事件信息,例如“用户正在输入...”
  • 状态(可用,忙碌,离开...)
  • 替身
  • ...

答案 2 :(得分:0)

我不懂Java所以这个答案将与语言无关。

在我看来,如果不在服务器上运行进程,最简单的方法就是将所有数据存储在数据库中。

以下是需要完成的基本事项的简短列表:

  1. 需要一张包含用户和密码进行身份验证的表格
  2. 需要有当前登录用途的表格 A.需要最后一次联系的时间戳字段
  3. 当用户执行某项操作时,将最后一个联系人字段更新为当前时间
  4. 如果用户的上次联系时间是>当前时间+ 2分钟然后他们退出
  5. 客户端应用程序需要定期向服务器发送消息,说“我还在这里”
  6. 您需要找到一种方法来确定邮件何时发送以及何时更新客户端显示已收到邮件,我将留给您。
  7. 如果你仍然需要一些帮助,那么AJAX / ASP.Net聊天应用应该(我没有查看它的来源)以同样的方式工作。

答案 3 :(得分:0)

我写了一个聊天引擎,它在后台有一个服务,一切都存储在一个数据库,一个输入表单框架和一个接收html流的输出框架中。

如果您想跳过服务部分并仅通过Web服务实现,则需要实现至少两个操作:Post for input和GetLatestChanges以接收聊天的输出,该输出使用一些Javascript魔法转换为HTML。 / p>

当然,您需要跟踪房间,用户,消息,用户收到哪些文本等,如Unknwntech所描绘的那样。