ColdFusion WebSocket:为subscribeTo指定的通道项无效

u59ebvdq  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(162)

我的公司在我们的ColdFusion 11服务器上使用cfwebsocket。在过去,它工作得很好,但最近我们每次尝试访问调用cfwebsocket的页面时都会收到此消息:

Attribute validation error for the CFWEBSOCKET tag The channel entry specified for subscribeTo is not valid. 
"testing123" is not a valid channel registered for this application.

然而,在我们的Application.cfc中,我已经设置了通道:

<cfset this.wschannels = [{name="testing123"}] />

另一个奇怪的问题是,当我转到ColdFusion管理员的WebSocket部分时。我也得到一个错误:


这真的很奇怪,因为我们以前就有过这样的工作。我们根本没有改变防火墙。有人能给我指个方向吗?

vxqlmq5t

vxqlmq5t1#

如果您已更新到Update 3,则问题的原因是Adobe在该更新中破坏了websockets。
我在发布后提交了一个bug-http://bugbase.adobe.com/index.cfm?event=bug&id=3865461
它已经被修复,你可以请求一个热修复程序,从他们解决这个问题,否则你将不得不等待,直到更新4!

kq4fsx7k

kq4fsx7k2#

发生错误的另一个原因(至少在CF2021中)是,如果您在尚未正确定义通道(在application.cfc中)时对通道发出请求。
真正令人沮丧的是,即使你在代码中纠正了问题,错误仍然会存在。
除了这个错误(订阅频道的页面上会出现这个错误),同样的问题会导致页面PUBLISHING to a channel上出现一个不同但同样持久的错误Channel [name] does not exist or is not running

有几种方法可以让错误消失(一旦你纠正了错误)。一个是重新启动CF(过度但容易)。另一种方法是重新加载应用程序(application.cfc),比如调用cfapplicationstop()函数。还有一种方法是更改应用程序名称(或者如果应用程序没有名称,则给予应用程序命名,例如在application.cfc中添加一行,如this.name = "test"(假设使用cfscript)。

任何这些都将导致CF不再将使用该通道名称的失败尝试与此应用程序相关联。现在请求应该可以工作了(如果其他都正确的话)。
最后,虽然我可以确认这个问题的原因不会导致OP报告的CF11管理员中的错误,但由于这篇文章是在搜索第一个错误时出现的,这是它的另一个解决方案,我想分享这一点。
(And FWIW,我在CF2023,2021甚至CF11中证实了这种行为。

相关问题