当CF8为我们提供ajax支持时,<cfajaxproxy>
和各种<cfform>
标签使得ajax与CF非常容易,但是任何JS lib都可以调用cfc?method=
,并且可以逃脱包括来自Adobe的那些可怕的JavaScript。
既然CF10给我们带来了websocket支持,但<cfwebsocket>
是使用websocket和CF的唯一方法吗?
答案 0 :(得分:1)
Henry,还有很多其他方法可以使用websockets,因为CF包含了一个相当强大的网关服务。自CF 7以来一直存在。
在我的CF 9服务器上,我使用了Nate Mische的产品,Scott在他的链接中指出。我添加了网关类型,然后添加了一个实例。我从我的内部跟踪系统向我的实例发送事件,我跟踪了许多顾问的记录时间。然后我构建了一个仪表板,其中包括实时图表加上小时,笔记和原始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那样整齐地打包,我怀疑套接字服务器可能在另一个系统上很脆弱 - 比如一个像股票交易应用程序那样负载很重的系统。但它适用于它的任务。我希望这有帮助!
-Mark