Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从HTML页面连接到coldfusion websocket_Javascript_Websocket_Coldfusion - Fatal编程技术网

Javascript 从HTML页面连接到coldfusion websocket

Javascript 从HTML页面连接到coldfusion websocket,javascript,websocket,coldfusion,Javascript,Websocket,Coldfusion,我想打开ColdFusion 2016服务器的web套接字,但我想从HTML页面(不是cfm)打开它,所以我没有使用cfwebsocket标记的选项。 我想要的是一个替代品。。 我尝试了以下代码 var webSocket_IP = '192.168.1.223'; var chatSocket = new WebSocket("ws://"+webSocket_IP+":8579/cfusion/cfusion"); ch

我想打开ColdFusion 2016服务器的web套接字,但我想从HTML页面(不是cfm)打开它,所以我没有使用cfwebsocket标记的选项。 我想要的是一个替代品。。 我尝试了以下代码

var webSocket_IP = '192.168.1.223';
        var chatSocket = new WebSocket("ws://"+webSocket_IP+":8579/cfusion/cfusion");                   

        chatSocket.onopen = function () {
            alert('OPEN');
        };
        chatSocket.onmessage = function () {
            alert('a message was recieved');
        };
        chatSocket.onError = function () {
            alert('Error');
        };
问题是我无法打开连接,onOpen方法无法运行

另一个问题是,当我想订阅任何频道

chatSocket.subscribeTo('chat');
{"ns":"coldfusion.websocket.channels","type":"welcome","subscribeTo":"CHANNELNAME","appName":"APPNAME"}
我一直得到以下错误

TypeError: chatSocket.subscribeTo is not a function

如果有人遇到同样的问题,我已经找到了解决办法 首先连接到coldfusion web套接字路径

var chatSocket = new WebSocket("ws://"+webSocket_IP+":8579/cfusion/cfusion");  
然后在web套接字对象上编写以下命令以订阅任何频道

chatSocket.subscribeTo('chat');
{"ns":"coldfusion.websocket.channels","type":"welcome","subscribeTo":"CHANNELNAME","appName":"APPNAME"}
如果您想编写消息,请使用以下命令:

{"ns":"coldfusion.websocket.channels","type":"publish","channel":"CHANNELNAME","data":"hi","appName":"APPNAME"}

请澄清Hamzeh的回答

如何建立连接

var chatSocket = new WebSocket("ws://"+webSocket_IP+":8579/cfusion/cfusion");  
如何订阅频道

chatSocket.send(
  JSON.stringify( {
    appName: "customoptionexample1", //App Name
    authKey: "739CAAF6CA8CA73DCCDB9305225F7D48",
    ns: "coldfusion.websocket.channels",
    subscribeTo: "bidchannel", //Channel subscribing to
    type: "welcome"
  } )
);
如何发送数据

chatSocket.send(
  JSON.stringify( {
    "ns": "coldfusion.websocket.channels",
    "type": "publish",
    "channel": "bidchannel", // Channel Name
    "appName": "customoptionexample1", //App Name
    "data": "Bid placed by adfadfadf Amount 66",
    "customOptions": {
      "value": "66"
    }
  } )
);
设置正常的web套接字回调

chatSocket.onopen = function() {
  console.log( 'opened' );
};
chatSocket.onclose = function() {
  console.log( 'onclose' );
};
chatSocket.onerror = function() {
  console.log( 'onerror' );
};
chatSocket.onmessage = function( event ) {
  //This parses the data and just prints the data and not the meta data.
  console.log( 'onmessage', JSON.parse(event.data).data ); 
};

WebSocket不是发布/订阅框架。你是什么意思?