【问题标题】:connect to coldfusion websocket from HTML page从 HTML 页面连接到coldfusion websocket
【发布时间】:2016-11-03 09:26:28
【问题描述】:

我想打开一个到 ColdFusion 2016 服务器的 web-socket,但我想从 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');

我不断收到以下错误

TypeError: chatSocket.subscribeTo is not a function

【问题讨论】:

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

标签: javascript websocket coldfusion


【解决方案1】:

为了澄清 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"
    }
  } )
);

设置正常的网络套接字回调

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 ); 
};

【讨论】:

    【解决方案2】:

    如果有人遇到同样的问题,我已经找到了解决方案 首先连接到coldfusion web socket路径

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

    然后在web socket对象上写如下命令订阅任意频道

    {"ns":"coldfusion.websocket.channels","type":"welcome","subscribeTo":"CHANNELNAME","appName":"APPNAME"}
    

    如果您想写消息,请使用以下内容:

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

    【讨论】:

      猜你喜欢
      • 2020-01-10
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 2017-04-11
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      相关资源
      最近更新 更多