我在这里尝试遵循基本的彗星示例:http://dojotoolkit.org/reference-guide/1.7/dojox/cometd.html
它使用的是旧的模块加载器,所以我尝试了如下等效方法:
require(["dojo/ready","dojo/io/script","dojox/cometd","dojox/cometd/callbackPollTransport"], function(ready, dontcare, cometd) {
ready(function(){
cometd.init('http://localhost:8080/MyCometD/cometd');
comted.subscribe("/test", function(msg){
console.debug(msg);
});
});
});
这不起作用,我认为这与加载模块有关 - 存在某种无声错误,因为 ready 函数中的代码根本不执行。我发现当"dojox/cometd"require语句存在时,ready函数中的代码不会执行。
运行示例:http://jsfiddle.net/Q9W8f/2/
删除 dojox/comted 的示例:http://jsfiddle.net/mMs2h/4/
我没有使用过新的模块加载器,所以我敢打赌我只是有一些简单的误解。
帮助!
看起来你是对的,并且对于永远不会加载的模块要求有一个"等待循环"。这可能是 dojox.cometd 中的任何要求,您需要重写代码库以进行修复。
我在 dojox 存储库中也遇到了类似的 RollingListPane 问题 - 开发人员说"我们 100% 符合 AMD 1.7",但是 dojox 中的 X 是实验性的缩写。dojox 模块的开发不是由核心 djtk 团队完成的,仍然存在故障。
尝试让初学者避免使用 CDN,它在每个模块上都执行了>>构建的宏。在使用 AMD 时,这有时会失败。而是下载压缩包并使用本地副本 - 未压缩(dojo-release-1.7.2-src)
您可以在以下链接中找到 cometD 和 ExtJs 中的 hello world 示例:http://jksnu.blogspot.in/2013/08/network-reliability-by-cometd-hellow_16.html