Coldfusion会话/应用程序范围在调用Websockets后清空WSPublish()

Pao*_*rdo 6 coldfusion

当使用Websockets并调用WSPublish时,我在Coldfusion(2016 UPDATE 5)中遇到了应用程序/会话范围的奇怪行为.

下面是说明此异常的代码:

<cfdump var="#application.Security.GetSession()#" label="1A application.Security.GetSession()">
<cfdump var="#session#" label="1B session">

<cfset wsPublish("notifications", "Test") />

<cfdump var="#application.Security.GetSession()#" label="2A application.Security.GetSession()">
<cfdump var="#session#" label="2B session">
Run Code Online (Sandbox Code Playgroud)

在1A和1B中,会话按照指示返回.

然后我运行WSPublish()函数.

在2A中,会话是空的,但在2B中它仍然像以前一样.

因此,在运行WSPublish()之后,当我尝试通过调用另一个CFC来检索它(2A)来访问会话时,它不存在.但是,直接访问会话时确实存在会话(2B).

所有的application.Security.GetSession()方法都是这样的:

<cfcomponent output="no">
    <cffunction name="GetSession" returntype="any">
        <cfif NOT IsDefined("session")>
            <cfreturn StructNew() />
        <cfelse>
            <cfreturn session />
        </cfif>
    </cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)

如果我删除WSPublish()调用,则1A,1B,2A,2B都返回正确的会话数据.

为什么WSPublish()会导致此异常,如何解决?

谢谢!