gpt4 book ai didi

azure - 要使 ColdFusion Websockets 在 Cloudflare 后面的 Azure VM 上工作,需要执行哪些步骤?

转载 作者:行者123 更新时间:2023-12-02 05:59:11 30 4
gpt4 key购买 nike

我们正在尝试在 Cloudflare 后面的 Azure VM 上运行的应用程序中使用 ColdFusion (2018.0.13.329786) 中的 websockets。但是,我们在客户端不断收到此错误:

WebSocket connection to 'wss://www.*************.com/cfws' failed: 
CFWebSocketWrapper.open @ cfwebsocketCore.js:21
init @ cfwebsocketChannel.js:49
_cf_websockets_init_6539553945348401 @ strategies-for-devel…ing-with-impact:175
fire @ cfajax.js:1214
$E.windowLoadHandler @ cfajax.js:1321

Uncaught TypeError: Cannot set properties of undefined (setting 'readyState')
at WebSocket.wsConnection.onerror (cfwebsocketCore.js:54:29)
wsConnection.onerror @ cfwebsocketCore.js:54
error (async)
CFWebSocketWrapper.open @ cfwebsocketCore.js:53
init @ cfwebsocketChannel.js:49
_cf_websockets_init_6539553945348401 @ *************:175
fire @ cfajax.js:1214
$E.windowLoadHandler @ cfajax.js:1321
load (async)
$E.onWindowLoad @ cfajax.js:1297
cfinit @ cfajax.js:1332
(anonymous) @ cfajax.js:1834

我们有一个 cfc,当消息发布到写入服务器上日志文件的 channel 时会调用它,并且该日志文件永远不会更新。这并不奇怪,因为似乎有什​​么东西完全阻止了连接。

从配置角度来看,我们在创建虚拟机时运行这些更新:

webSocketObj= createObject("component","cfide.adminapi.websocket");
webSocketObj.setProperty(propertyName="EnableWebSocketServer", propertyValue="true");
webSocketObj.setProperty(propertyName="EnableProxyPort", propertyValue="8581");

然后通过 cfExecute:

#server.coldfusion.rootdir#/lib/wsproxyconfig.jar -ws IIS -site All -host localhost -port 8581

然后CF服务和IIS将重新启动。

我们还在 Cloudflare 中启用了 websocket“开关”。

这应该与进入 CF Admin、进入 websockets 选项卡、然后勾选“使用代理”,然后使用默认端口 8581 相同。从客户端角度来看,这应该通过端口 443 上的 IIS 发送所有内容.

Cloudflare 和 Azure 表示不需要特殊配置。我们可以看到CF打开了8581端口。

最令人气愤的是,我们去年在开发环境中进行了此工作,经过多次尝试和错误后才使其正常工作。然而,我们当时的笔记并不好,当我们执行上述操作以尝试使其在我们的 QA 环境中运行时,它不起作用。我们显然在某个地方遗漏了一个步骤,但一直无法弄清楚。

任何已经完成此工作的人都可以解释一下让 ColdFusion Websockets 在 Cloudflare 后面的 Azure VM 上工作需要执行哪些步骤吗?

最佳答案

我们解决了这个问题。希望这会对遇到同样问题的其他人有所帮助:

根据这个doc ,我们意识到 wsproxyconfig 应该在 IIS 中创建一个名为 cfws 的“应用程序”(如虚拟文件夹),指向 /config/wsproxy/1。然而,它并没有这样做。创建该应用程序后,一切都开始按预期工作。

经过进一步测试,我们发现仅当以管理员身份运行时才会创建此应用程序。否则,它会报告成功并且不提供任何警告或失败,但不会创建应用程序。

我们通过 CFExecute 从命令行运行 wsproxyconfig,因此它在管理用户下运行,但这显然还不够。因此,我们将 wsproxyconfig 调用移至我们的 PowerShell 脚本之一,并让它以管理权限运行,这解决了我们的问题。

这显然最初在我们的开发环境中有效,因为我们手动运行 wsproxyconfig。

关于azure - 要使 ColdFusion Websockets 在 Cloudflare 后面的 Azure VM 上工作,需要执行哪些步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71783616/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com