通过 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