有谁知道 CF10 中的新 websockets 功能是否可以跨域和跨服务器使用?有没有人知道或有一些示例代码来做到这一点?我在我的应用程序上有一个简单的实时帮助聊天,但我想将它应用到其他站点,并有一个中央管理聊天区域,支持代理将在其中与跨域用户进行交互。
问问题
174 次
1 回答
0
据我所知,他们没有。但是,您可以使用 a<cfhttp>
调用将发布消息的其他站点上的文件。这是我完成的。
创建一个名为socketPublisher.cfm的文件并将其保存在不需要登录访问文件的目录中。
socketPublisher.cfm
<cfparam name="Request.Attributes.msgType" default="newJob">
<cfparam name="Request.Attributes.channel" default="notify">
<cfparam name="Request.Attributes.Type" default="">
<cfoutput>
<cfswitch expression="#Request.Attributes.Type#">
<cfcase value="yourType">
<cfscript>
WSPublish('chat',{message: '', msgType: '#Request.Attributes.msgType#'});
</cfscript>
</cfcase>
<cfdefaultcase>
<cfscript>
WSPublish('#Request.Attributes.channel#',{message: '', msgType: '#Request.Attributes.msgType#'});
</cfscript>
</cfdefaultcase>
</cfswitch>
</cfoutput>
然后在另一个站点的操作页面中,您需要向该文件发出 http 请求。
动作页面.cfm
<cfhttp method="Post" url="#socketURL#/_scripts/socketPublisher.cfm">
<cfhttpparam type="URL" name="msgType" value="pendingFiles">
</cfhttp>
那应该这样做。
CF10 还存在一个已知问题,WSPublish
即在尝试从操作页面进行重定向时,它会更改 CGI 范围导致错误。在找到更好的解决方案之前,我将其用作该问题的解决方法。
于 2013-12-12T22:06:45.260 回答