我的公司在我们的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部分时。我也得到一个错误:
这真的很奇怪,因为我们以前就有过这样的工作。我们根本没有改变防火墙。有人能给我指个方向吗?
2条答案
按热度按时间vxqlmq5t1#
如果您已更新到Update 3,则问题的原因是Adobe在该更新中破坏了websockets。
我在发布后提交了一个bug-http://bugbase.adobe.com/index.cfm?event=bug&id=3865461
它已经被修复,你可以请求一个热修复程序,从他们解决这个问题,否则你将不得不等待,直到更新4!
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中证实了这种行为。