不使用数据库实现聊天应用程序

5

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

我想知道是否有一种使用Ajax和jsp/servlets在HTTP中实现聊天应用程序的方法,而无需数据库连接?我了解jsp、servlets。在jsp/servlet应用程序中如何处理会话、请求和响应?


2
数据库并不是聊天的必要条件。请阅读有关Comet(http://en.wikipedia.org/wiki/Comet_(programming))和Node.js(http://nodejs.org/)的内容。 - MilkyWayJoe
你不想使用数据库有具体的原因吗? - Snuffleupagus
https://github.com/jmg/node-simple-chat/blob/master/chat.js - Ilya Kozhevnikov
谢谢。您能简单解释一下chat.js吗? - Débora
在这种情况下,Chat.js只是一个简单的随机示例,用于说明原理--node.js/asp/jsp等后端使用全局/共享/静态数组/列表/队列/堆栈来响应轮询,并偶尔弹出/出列/移位它们以保持内存占用率低。 - Ilya Kozhevnikov
3个回答

1

数据库只是一个被吹嘘了的文件。如果你的数据足够简单,而且你不想处理数据库,那就写到文件中吧?


谢谢。将数据写入文件是一种IO操作。我正在寻找一种方法,不将数据保存在数据库表或文件中,而是保存在会话/会话作用域之类的东西中。 - Débora
1
会话默认存储在文件中! - Halcyon

1

如果您想要非生产、教育版本,可以使用应用程序范围:

您可以有一个应用程序作用域变量来保存聊天列表

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

只要您具备线程安全的保护措施,并在需要同步时进行同步,就可以了

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

编辑:

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

您还可以使用 ServletContext.setAttribute(同样存在同步和可扩展性问题)


非常感谢。如果有更多的用户聊天,会发生什么?这不会对容器造成负载吗? - Débora
这绝不是一个生产解决方案,更像是一个起点,但负载将在读/写同步上,因此如果使用正确的数据结构,理论上,这可以支持许多用户直到某个点,问题出现在需要扩展时(添加更多节点),然后需要同步缓存/内存等。尝试查看一些NoSQL数据库(MongoDB?),它们在大多数情况下倾向于更好地扩展。 - Eran Medan

1
如果你是一位Java开发者,那么我认为spire.io可能非常适合你的需求。这是一个服务,可以让你使用Java客户端构建无服务器、无数据库的应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接