使用 webexpress 和 pug/jade 为带有 autodesk forge viewer 的页面提供服务

Using webexpress and pug/jade to serve page with autodesk forge viewer

我正在编写一个 node.js webexpress 服务器,它使用 pug (jade) 创建一个网站来查看 (revit) 上传到 autodesk forge 的文件。

网络服务器使用 axios 与 forge 通信并允许登录、创建和打开存储桶、上传文件以及获取上传到存储桶的项目的 URN。

在设置查看器时,我有使用浏览器本地设置的 viewerapp 的示例。然而,我正在使用哈巴狗来创建页面,这似乎不允许让查看器在浏览器中保持页面活动并且只更新它。否则浏览器中的每一次鼠标点击 window 都会设置一个新的查看器,这看起来既慢又大材小用。

套接字库似乎允许在网络服务器和浏览器之间进行双向通信,但这是一个全新的库,如果没有必要,我宁愿不包括在内。

所以第一个问题是,是否可以使用 node.js webexpress 和 pug 动态创建一个网页,其中包含 forge 查看器,以及允许更改视图而无需重新发送整个页面的按钮,包括再次设置查看器。

如果是这样,是否有比依赖套接字库更简单的方法?

我当然可以将所有查看器逻辑放在随页面一起加载的 javascript 文件中,但如果没有必要,我宁愿不这样做,因为那样会暴露太多 [=31] =] 以及与最终用户建立的连接。如果可以将其保留在网络服务器上,我会更喜欢它。

我查看了 https://learnforge.autodesk.io/#/viewer/2legged/nodejs 和其他示例代码,但这似乎没有回答我的问题,因为查看器似乎是在浏览器中创建和维护的,而不是由 node.js 网络服务器创建和维护的.

So the first question is if it is even possible to use node.js webexpress and pug to dynamically create a webpage with the forge viewer in it, and buttons that allow for changing views without resending the entire page including setting up the viewer again.

当然可以。可以使用原生 JavaScript 动态加载和卸载查看器。有关详细信息,请参阅一本好书 here and sample code here. So can the models - see an article here and sample here

您要避免的一个陷阱是,在不先卸载 Viewer 的情况下永远不要 hide/detach canvas。在撰写本文时,Viewer 尚不支持呈现为零大小 canvas。

And if so, is there a simpler way to do so than relying on the socket library?

不幸的是,Viewer 目前还不支持服务器端呈现,因此我们不会被 Websocket 以外的选项所宠坏。您的担忧是完全合理的,请参阅一些关于 WebGL 安全性的精彩讨论 here and here。 Viewer 没有其他可用的渲染引擎,除非某些其他下一代技术优先于 WebGL(尽管在可预见的未来不会出现)或某些 WebAssembly 库优先于直接调用 WebGL,否则应该保持这种状态应该在一定程度上处理代码混淆。

然而,没有什么可以阻止您使用适当的 AAA 保护您的代码(Viewer 支持 API 代理,这应该会进一步加强您的安全措施),以及 these 常见的混淆做法来保护您的滥用代码。