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

时间:2017-12-02 19:06:09

标签: 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">

在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>

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

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

谢谢!

0 个答案:

没有答案