如何在 javascript/HTML5/NodeJS 中实现客户端-服务器-客户端基础架构的想法

Posted

技术标签:

【中文标题】如何在 javascript/HTML5/NodeJS 中实现客户端-服务器-客户端基础架构的想法【英文标题】:Ideas how to implement a client-server-client infrastructure in javascript/HTML5/NodeJS 【发布时间】:2013-10-31 23:42:05 【问题描述】:

我目前正在开展一个项目,其中基础架构必须如下所示:

[客户端 1] ----------- [服务器] ----------- [客户端 2]

客户端 1 必须激活一个按钮,这将在服务器上触发一个事件。 然后,客户端 2 必须侦听该特定事件以显示该值。

例如,客户端 1 将是一个平板电脑,具有一个 ID 为 1 的简单按钮。

我必须能够在客户端 2 上显示,让我们假设一台电视插在 linux (Raspberry Pi) 机器上,在平板电脑上按下 ID 1 按钮。

您将如何实现该架构,仅使用 html 来显示客户端 1 和 2,使用 javascript 在服务器和客户端之间进行通信,并使用 NodeJS 作为服务器核心?

欢迎任何想法,我尝试实现它,但我的逻辑在某些时候失败了! :)

【问题讨论】:

Meteor 和 Derby 是实现您所要求的客户端-服务器功能的节点框架。 多亏了你,这似乎是我正在寻找的。我一定会给他们一个机会! 哦,我刚刚意识到 Meteor ins 不支持我尝试实现的 Linux 架构,即 Raspberry Pi 上的 ARM。一开始忘了提,我编辑了我最初的问题。 【参考方案1】:

您所描述的似乎是实时功能。您所描述的本质上类似于聊天系统,只是更细粒度和结构化。这不是您使用什么技术来呈现它的问题,而是您用于在客户端和服务器之间进行通信的协议。

通常,HTTP 不太适合实时应用程序。尝试解决您遇到的问题的技术是WebSockets。 NodeJS 支持 WebSockets,新的浏览器也支持,所以你可以四处寻找不同的库和实现。请记住,在使用 WebSockets 协议时,您在客户端使用的工具取决于您在服务器上使用的工具,反之亦然。

您可以以Socket.io 为例。如需进一步的指示,您可以看看这个问题:Which websocket library to use with Node.js?

许多库在 WebSocket 之上提供了一个额外的抽象层,让您无需关心底层协议即可实现实时功能。其中一个 cmets 中提到的 Meteor 框架就是这样的东西——它在底层使用 WebSockets 和 HTTP,这取决于你做什么。

这完全取决于您想要多少控制权。您必须知道自己想完成多少工作以及希望第三方为您完成多少工作。

【讨论】:

感谢您的详细回答 Slavo,非常感谢。我已经尝试过使用 Socket.io,到目前为止,我发现它是最容易使用的。我仍然无法弄清楚如何实现我想要的,但这是我的另一个问题,我知道我在正确的轨道上! :)

以上是关于如何在 javascript/HTML5/NodeJS 中实现客户端-服务器-客户端基础架构的想法的主要内容,如果未能解决你的问题,请参考以下文章

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?

如何在 Fragment 中调用 OnActivityResult 以及它是如何工作的?

如何使用 Firebase 在 Web 上托管 Flutter?它的效果如何?