如何在 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 中开始新的活动?