CF2021 Getting Started with WebSockets (cfwebsocket)



我刚开始使用cfwebsocket,遇到了一些麻烦。我在网上发现,由于这是面向公众的应用程序,所以最好使用websocket代理。

CF2021,版本:2021.0.03.329779

Ubuntu 20.04LTS

迄今为止的步骤:

  1. 我将websocket包添加到服务器并启用了web套接字。已重新启动服务器。

  2. 将此添加到我的应用程序中。fc:

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

(应用程序也有一个来自变量的this.name=集3.创建了一个简单的页面,其中包含:

<cfwebsocket 
name="wSocketObj" 
onMessage="wsOnMessage" 
onOpen="wsOnOpen" 
onClose="wsOnClose" 
onError="wsOnError" 
subscribeTo="chat"
secure="true"/>
<script type="text/javascript">
wsOnMessage =  function(aEvent,aToken) {
console.log('wsOnMessage',aevent);
var message = ColdFusion.JSON.encode(atoken); 
var txt=document.getElementById("myDiv"); 
txt.innerHTML +=message +"<br>"; 
}
wsOnOpen = function() {
alert("wsOnOpen Connection is open");
}
wsOnClose = function() {
alert("wsOnClose Connection Closed");
}
wsOnError = function() {
alert("wsOnError!");
console.log(arguments);
}
sendMessage = function() {
var text = window.prompt("Enter some text","");
if (text) {
wSocketObj.publish("chat", text);
}
}
</script> 

<cfdiv id="myDiv"></cfdiv>
<div id="myChatArea"></div>
<input type="text" id="myMessage" /><input id="myButton" type="button" value="Send Message" onClick="sendMessage()" />
  1. 在Chrome控制台中得到了这个:

    到"的WebSocket连接wss://myhost.mydomain.com:8555/cfusion/cfusion'失败:CFWebSocketWrapper.open@cfwebsocketCor.js:21init@cfwebsocketChannel.js:49_cf_websockets_init_66322652258206397@client.cfm:35fire@cfajax.js:1214$E.windowLoadHandler@cfajax.js:1321cfwebsocketCore.js:54未捕获类型错误:无法设置未定义的属性(设置"readyState"(位于WebSocket.wsConnection.oneror(cfwebsocketCore.js:54:29(

认为这是防火墙问题,我在Ubuntu 中禁用了它

  1. 在这一点上,我似乎需要配置一个代理
  2. 我从命令行运行/opt/ColdFusion/cfusion/bin/wsproxyconfig.sh,并验证apache2.conf中的行和文件夹"/opt/ColdFusion/config/wsporoxy/1/mod_wsproxy.conf";已创建。重启产能2和CF2021
  3. 相同的结果
  4. 意识到我需要更改CF Admin中的websocket配置
  5. 当我在CF管理中选择"使用代理"时,"保存更改"按钮将消失,我无法保存它

很明显,我在这里遗漏了一些非常基本的东西。任何人能提供的任何帮助都将不胜感激。

提前感谢

这是一个已知的问题,在几份错误报告中向Adobe报告了这个问题(其中一份作为重复报告撤回(。在我们等待Adobe的解决方案时,我将分享我在其中提供的一个变通方法:

作为一种变通方法,对于那些可能需要启用";使用代理";字段(或者更改保留在页面(,请注意,如果您将光标放入";端口";字段,您可以点击回车键,您的浏览器将提交页面(CF将保存更改(。

为了证明这一点,你甚至可以离开页面并返回页面。但即使在这样做之后,提交按钮将仍然是"提交"按钮;"消失";,不是正确的

如果你想在这里添加投票或关注跟踪票,请访问https://tracker.adobe.com/#/view/CF-4216275.

最新更新