通过 Websockets + NodeJS 而不是 AJAX 加载 Jade -> HTML

Posted

技术标签:

【中文标题】通过 Websockets + NodeJS 而不是 AJAX 加载 Jade -> HTML【英文标题】:Loading Jade -> HTML via Websockets + NodeJS instead of AJAX 【发布时间】:2012-09-21 09:13:46 【问题描述】:

想知道是否有一种干净正确的方法可以通过 websockets 而不是通过 $.ajax(...) 请求加载 html 标记。我对 websockets 有点陌生,所以我想弄清楚它在哪里可以完全取代 AJAX 等等......

现在我只是在我的 NodeJS 应用程序中创建另一个“发布”路由器来加载 html,但我不知道是否所有这些都是必要的。

【问题讨论】:

【参考方案1】:

如果您想在客户端和服务器之间保持双向连接,则主要需要 websocket,这对于实时应用程序(如聊天、股票营销、电子学习等)很有用。

如果你需要加载html标记,你不需要从客户端到服务器多次来回加载内容并提供它,这将是一种优雅且不浪费的方式。

如果您不想向服务器传递额外的有效负载,也可以使用获取路由和 $.get ajax 请求。

【讨论】:

【参考方案2】:

当然,您可以通过 websockets 将数据从 Node.js 服务器传递到您的客户端,一旦在客户端上,只需将其发布到页面。

例如,如果您使用的是 socket.io,您可以使用生成的 html 在服务器内部发出一个事件,该事件将在客户端代码中接收:

在服务器上:

socket.emit('yourFiringEvent', variableContainingYourRawHtml);

javascript 客户端上:

socket.on('yourFiringEvent', function(htmlResult) 
    $("#yourContainerId").html(htmlResult); //jQuery flavour ;-)
);

当您的客户端代码从服务器接收到事件时,将在 HtmlResult

内的 variableContainingYourRawHtml 上加载数据

如果你不使用它,我推荐使用 socket.io 库来使用 websocket,它非常强大和简单:

http://socket.io/

【讨论】:

但是你如何从一个jade文件中获取它,从节点内部获取原始html?

以上是关于通过 Websockets + NodeJS 而不是 AJAX 加载 Jade -> HTML的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS中的Websockets。从服务器端WebSocket客户端调用WebSocketServer

Windows 上的 nodejs 和 websockets

Websockets(ws) , NodeJs 集群,

使用 Websockets 和 Nodejs 上传文件

NodeJS 如何在没有 WebSockets 的情况下处理持久连接?

端口 34037 已在使用 Heroku + Nodejs + Express + WebSockets