PHP Fat-Free-Framework 加上 Node.js 和 Secure Websockets

PHP Fat-Free-Framework plus Node.js and Secure Websockets

我的任务是测试使用 F3 和 Node.js 以及 Socket.IO 用于我们即将推出的网络应用程序的可行性。该应用程序将专门使用 https。老板喜欢 F3 的模板,所以我们没有只在服务器端使用 Node。

F3 将用于提供静态内容。我想使用 WSS 为页面提供实时数据,并让客户端发出与该实时数据相关的请求。

我已经编写了一个测试应用程序,并且所有活动部件都可以正常工作,但我遇到了障碍。当我的客户端 WSS websocket 尝试连接到侦听 9220 的 Node 应用程序时,浏览器抱怨 CORS。我通过为 192.168.10.1:9220 设置例外来解决这个问题,但我怀疑这种方法是否适用于生产。

完成后,我们的网络应用程序将由我们自己的硬件提供服务,该硬件将成为客户现有网络的一部分。我使用的是通用名称为 192.168.10.1 的自签名证书。我目前正在做一个 'redirect permanent' 强制所有内容从 *:80 到 https。

我的问题是:有没有一种方法可以让 F3 抓取对“/blah_blah”的所有页面请求,并且可能有多个 Node 应用程序(我们肯定会有一个应用程序)监听它们各自的用于客户端连接的端口,并让这些客户端连接到节点端口而无需执行任何特殊例外?这一切都是通过 https 实现的吗?

我不知道是否需要调查使用更多虚拟主机或代理或什么。我想我想要的是一个前进的方向,即接下来要调查的内容,以便让所有部分都能在 https 上正常运行,而无需设置任何浏览器例外。

一个典型的页面将包含通过 F3 提供的文本和图形以及动态图形(通常作为 HTML5 Canvas 对象),仅当源数据更改时通过 WSS 更新.


更新:

事实证明,只需解决 CORS 问题(正如@ikkez 所建议的那样)就可以让我所有的移动部件正常工作。这些是我为了让它工作必须做的关键点:


好吧,实际上您的问题是如何在 node.js 上启用 CORS 支持?!简短的 google search 为您提供了在 express.js 中执行此操作所需的全部资源。一旦您在您的节点应用程序中发送了正确的 CORS headers,您的浏览器就不会再大喊异常了。

不过,如果您只需要 websocket 来实时更新您网站上的内容,您也可以尝试使用 ajax 长轮询和新 $f3->until() methed, to load new data on demand. A little sample usage can be found here 的另一种方法。也许这已经可以解决问题了