6

当 CF8 为我们带来 ajax 支持时,<cfajaxproxy>各种<cfform>标签使 CF 的 ajax 变得非常容易,但cfc?method=任何 JS 库也可以调用,并且可以避免包含来自 Adob​​e 的那些可怕的 JavaScript。

既然 CF10 为我们带来了 websocket 支持,但是否<cfwebsocket>只能通过 CF 来使用 websocket?

4

1 回答 1

1

Henry,还有许多其他使用 websockets 的方法,因为 CF 包含一个相当强大的网关服务。它自 CF 7 以来一直存在。

在我的 CF 9 服务器上,我使用 Scott 在他的链接中指出的 Nate Mische 的产品。我添加了网关类型,然后添加了一个实例。我从我的内部跟踪系统向我的实例发送事件,在该系统中我跟踪了许多顾问的记录时间。然后我构建了一个仪表板,其中包括实时图表以及小时、注释和原始 SVN 评论更新。它让我生动地了解了我公司在工作日期间发生的事情。单击图表的饼图部分会使用套接字显示其他图表数据。例如,单击客户的饼图会显示该客户的每日工作时间。它(通常)比 Ajax 调用快得多。我使用名为“Rgraph”的客户端图表库来制作视觉效果。

它看起来像这样。

仪表板

在客户端的引擎盖下,代码是您所期望的。请注意,这些示例并不是全部 - 您的实现将是独一无二的。

<script>

var reconnectTimer = 0;
var userID = '1';
var socketDomain = 'ws://*my system url*.com:1225';
// Firefox is a little different.
if (window.MozWebSocket) {
  window.WebSocket = window.MozWebSocket;
}

...
</script>

我打开一个连接(conn 是 var),然后有一个 onMessage() 函数可以解析出每种消息类型(消息以 json 形式出现 - 但它们可以是任何类型的字符串)。

 conn.onmessage = function (event) {

      var message = event.data;
          console.log(event.data);
      var t = JSON.parse(event.data);

      if(t.TYPE != 'Blah') 
                  do A B or C
....

它不像 cfwebsocket 那样整齐地打包,我怀疑套接字服务器在不同的系统上可能很脆弱 - 比如说一个负载非常重的系统,比如股票交易应用程序。但它适用于它的任务方式。我希望这有帮助!

-标记

于 2014-01-09T15:39:45.050 回答