我使用Coldfusion中的cfwebsocket标签来创建web套接字连接。我在这里看了一个例子http://www.sagarganatra.com/2012/03/html5-websockets-in-coldfusion-10.html在接近结尾时,它向你展示了你可以对web套接字对象进行的所有javascript调用。然而,当我试图对它进行任何调用时,我得到一个错误,它是未定义的。例如:
<cfwebsocket name="ws" onMessage="messageHandler" onOpen="openHandler" onClose="closeHandler" onError="errorHandler" subscribeTo="chat" />
在javascript中我调用
alert(ws.isConnectionOpen());
和我得到错误在firebug: TypeError: ws is undefined.
有谁知道我为什么不能叫它吗?我的聊天功能很好,我可以正常连接和聊天。我只是想在聊天结束时关闭连接,所以我正在研究它是如何调用websocket的,但我不知道为什么它不工作。请注意,我使用的是jQuery, javascript已经包装在文档中了。
首先,在ws对象建立到服务器的连接之前,您不能与它交互。
有几种方法可以处理这种情况。您可以使用"onOpen"属性,并让它在web套接字连接建立后调用一个函数。
然而,你可能最好只是使用"onMessage"属性并创建一个通用的监听器函数来处理来自服务器的所有web套接字消息。
function messageHandler(msg) {
if (msg.type == 'response' && msg.reqType == 'welcome'){
alert('user connected');
}
}