Mar*_*cus 2 javascript node.js socket.io
我想在调用函数时将消息从服务器发送到客户端。使用此应答消息中的代码可以每秒成功地从服务器发送到客户端。
我正在构建一个在后台运行节点的应用程序,理想情况下,我希望能够单击一个按钮来调用节点 server.js 文件中的函数,该函数接受一个参数并将该消息发送到客户端。有问题的函数看起来像这样
function sendToClient(message) {
clients[0].emit('foo', msg);
}
Run Code Online (Sandbox Code Playgroud)
这会将传入的消息发送给第一个客户端。我该怎么办?
在终端中,运行后node server.js是否有一种方法可以使用终端从服务器文件调用函数,如果是这样,这可能是一个可能的解决方案。
现在从服务器向客户端发送消息的最佳方法是使用 webSockets。基本概念是这样的:
一个流行的 Node.js 库可以让 webSocket 支持变得非常简单socket.io。它同时支持客户端和服务器,因此您可以在连接的两端使用相同的库。socket.io 库支持.emit()您问题中提到的通过活动 webSocket 连接发送消息的方法。
您不直接从客户端调用函数到服务器。相反,您发送一条消息来触发服务器运行某些特定代码,反之亦然。这是协作编程,必须对远程端进行编码以支持您要求它执行的操作,以便您可以向其发送消息和一些可选数据以配合该消息,然后它可以接收该消息和数据并执行一些操作与该代码。
因此,假设您希望服务器在温度发生变化时通知客户端,以便客户端可以在其网页中显示更新后的温度(我实际上有一个 Raspberry Pi node.js 服务器就是这样做的)。在这种情况下,客户端网页在加载页面时会建立到服务器的 webSocket 连接。同时,服务器有自己的进程来监视温度变化。当它发现温度发生了一些有意义的变化时,它会向每个连接的客户端发送带有新温度数据的温度变化消息。客户端接收该消息和数据,然后使用它来更新其 UI 以显示新的温度值。
交易也可能走向另一个方向。客户端可能有一个信息矩阵,希望服务器对其进行一些复杂的计算。它将向服务器发送一条消息,其中包含消息类型中指示的计算类型,然后发送矩阵作为消息的数据。服务器将接收该消息,发现这是对某些数据进行特定类型计算的请求,然后它会调用适当的服务器端函数并将客户端数据传递给它。当结果在服务器上完成时,它会将结果发送回客户端。客户端将收到该结果,然后对计算结果执行所需的操作。
请注意,如果事务仅从客户端到服务器,然后从服务器返回响应,则该类型的事务不需要 webSocket。只需一个 Ajax 调用即可完成此操作。客户端向服务器进行ajax调用,服务器制定响应并返回响应。webSockets 最独特的用途是,如果您想从服务器发起通信并在服务器决定的时间向客户端发送未经请求的数据。为此,您需要在客户端和服务器之间建立一些持续的连接,这就是 webSocket 的设计目的。
您的问题似乎还有更多关于如何从 C# 服务器与 Node.js 服务器进行通信以便通知客户端的问题。如果是这种情况,那么由于 Node.js 服务器已经是一个 Web 服务器,我只需添加一条到 Node.js 服务器的路由,这样您就可以简单地从 C# 服务器到 Node.js 服务器执行 http 请求将一些数据传递到 node.js 服务器,然后它可以使用该数据通过上述 webSocket 连接通知相应的客户端。根据您的安全需求,您可能希望实现一定程度的安全性,以便 http 请求只能从您的 C# 服务器本地发送,而不能从外部世界发送到您的 Node.js 服务器。
| 归档时间: |
|
| 查看次数: |
6258 次 |
| 最近记录: |