【问题标题】:Implement a Chat application without a DB实现一个没有数据库的聊天应用程序
【发布时间】:2012-05-10 19:00:01
【问题描述】:

可以使用数据库实现聊天应用程序(浏览器在特定时间段内连续发送请求并从保存消息的表中获取数据)。

我想知道,有没有办法在 HTTP 中使用 Ajax 和 jsp/servlet 实现聊天应用程序,并且没有数据库连接?我知道jsp,servlet。如何在 jsp/servlet 应用程序内部处理会话、请求、响应?

【问题讨论】:

标签: javascript ajax jsp servlets chat


【解决方案1】:

如果您想要非生产、教育版本,您可以使用 Application Scope:

你可以有一个应用范围的变量来保存聊天列表

例如使用<jsp:useBean scope="application">(每个应用一个实例)

只要你有线程安全护目镜,并且在需要的地方进行同步,就可以了

但如前所述,请尝试检查 node.js,这似乎是自然的候选者

编辑:

请注意,应用程序上下文是每个虚拟机的,例如不是最可扩展的方法

您也可以使用ServletContext.setAttribute(同样的同步和缩放问题)

【讨论】:

  • 非常感谢。如果有更多的用户聊天会发生什么?这不会对容器造成负担吗?
  • 这远不是一个生产解决方案,更多的是一个起点,但是负载将在读/写的同步上,所以如果你使用正确的数据结构,理论上,这可以在某种程度上支持许多用户,当您需要扩展(添加更多节点)然后您需要同步缓存/内存等时,问题就出现了。尝试查看一些 NoSQL DB(MongoDB?),它们往往会更好地扩展大多数情况下
【解决方案2】:

数据库只是一个美化的文件。如果您的数据足够简单,并且您不想处理数据库,只需写入文件?

【讨论】:

  • 谢谢。写入文件是IO。我正在寻找一种不将数据保存在数据库表或文件中的方法,而是保存在会话/会话范围之类的东西中。
  • 会话存储在文件中! (默认)
【解决方案3】:

如果您是 java 人,在我看来,您需要的东西很适合 spire.io,该服务允许您使用 java 客户端构建无服务器、无数据库的应用程序。

【讨论】: