meteor使用DDP而不是袜子/ websockets.如何获得浏览器调试控制台中发生的事情的任何类型的视图?在chrome的网络面板中,至少只有一个"websocket"连接,没有太多关于在其上运行的流量的信息.
我知道arunoda的DDP分析器和代理,但正在寻找其他方法来获取流量的基本信息.我原以为chrome的调试工具会对HTTP以外的协议提供更多的支持,并有兴趣知道其他人认为有用的东西.
当我使用 ddp 模式(2 个 GPU)在集群上启动主脚本时,Pytorch Lightning 会复制主脚本中执行的任何内容,例如打印或其他逻辑。我需要一些扩展的训练逻辑,我想自己处理。例如,在之后做某事(一次!)Trainer.fit()
。但随着主脚本的重复,这并不能按我的预期工作。我也尝试将其包装在 中if __name__ == "__main__"
,但它不会改变行为。如何解决这个问题呢?或者,如何在 Trainer 对象周围使用一些逻辑,而无需重复?
我有一个Meteor应用程序A
和另一个应用程序B
,不使用Meteor,但与应用程序进行一些数据交换A
.当我A
在我的本地网络中的计算机上启动时它工作正常,但是当我在meteor.com托管它时,它没有.服务器没有回复.
B
使用代码new WebSocket("ws://" + host + ":3000/websocket")
进行连接(DDP协议).但是,当我将ws更改为wss时,即使使用局域网中的机器,它也不再起作用 - 它不会回复.
A
当我在浏览器中打开它时,我看到应用程序的主页使用了像
wss://ddp--6774-{my host name}.meteor.com/sockjs/465/asf0b7da/websocket
.
问题:
如何B
使用安全WebSocket(wss)进行连接?
如何将其连接到A
托管在{my host name} .meteor.com上?
A
例如,如何强制使用固定URL回复请求ws://{my host name}.meteor.com:3000/websocket
?我如何强制它使用ws而不是wss?
我应该在config.js或settings.js中指定一些内容吗?
有没有办法为meteor.com托管指定环境变量,例如DDP_DEFAULT_CONNECTION_URL,NODE_OPTIONS?
在Discover Meteor示例中,"帖子"和"帖子"之间的区别是什么?为什么当我们从服务器进行插入时我们使用"帖子"但是当从浏览器查询时我们使用"帖子"?系统不会因案例差异而混淆吗?
我在posts.js中看到客户端帖子到服务器帖子的变量赋值.将资本化客户端并使用小型上限服务器是一种传统的表示法吗?
Posts = new Meteor.Collection('posts')
Run Code Online (Sandbox Code Playgroud)
为什么server/fixtures.js使用"帖子"?我假设我们在浏览器(客户端)中查询"帖子",并在服务器中使用"帖子",就像我们在meteor mongo中所做的那样.那么为什么我们现在在服务器中使用帖子呢?
我遇到了客户端无限循环导致Meteor服务器崩溃的情况.无限循环是我将修复的错误,而不是这个问题的主题.我担心的是恶意用户可能会创建自己的无限循环并使Meteor服务器崩溃.
有问题的无限循环是反复调用Meteor.subscribe(...)
和Meteor.call(...)
.看起来这些请求正在服务器上排队到达失能的程度,即使客户的意图是放弃它们.有没有办法告诉服务器该请求已被放弃并将其从队列中删除?
我认为这不会保护服务器免受客户端的影响而无需放弃数千个连续请求,因此如果有人有答案,这个问题将取代这个问题.如何限制单个客户端可以发出的请求数?
在这些APM图表中,您可以看到无限循环如何影响性能.我在大约13:17开始它,并且在13:25应用程序崩溃(由Heroku终止超过其内存配额).
我正在编写一个软件,通过DDP连接到Meteor服务器来读取数据.
我面临的问题是如何区分添加到集合中的新文档和获取已有文档的通知.
当我第一次连接到服务器时,我收到一系列added
消息来填充客户端集合.我不知道如何区分这些消息,以及稍后出现的消息,表明实时添加了新文档.当DDP客户端需要重新连接到服务器时,这会变得更糟,此时所有当前文档再次作为added
消息发送.
我使用Asteroid作为我的ddp来连接我的Meteor应用程序作为后端.前端运行https
,它在Chrome上完美运行.所以它实际上由两个独立运行的应用程序组成.但它在Safari中并不顺利.由于存在混合/不安全内容,Safari会阻止连接.
到目前为止,我已将force-ssl
程序包添加到我的Meteor应用程序中但仍然没有运气.如何wss
在本地开发计算机上启用协议(localhost)
Meteor的DDP协议非常适用于将一小部分数据从服务器同步到基于浏览器的客户端,这本身就限制了处理的数据量.
但是,请考虑Meteor用于将大型集合从一个服务器同步到另一个服务器的情况,或者仅使用DDP协议本身将一个MongoDB与另一个服务器同步.
在这种情况下(计算上)DDP的效率如何?它如何扩展到几个客户?性能仅限于带宽还是DDP也会受到一些CPU限制?现在可以通过DDP合理同步的最大数据量是多少?DDP是否是这样做的错误方法(参见下面的参考资料)?
一些额外的想法:
也可以看看:
编辑:
经过一些实证经验,我必须得出结论,答案是"效率不高".有关说明,请参阅/sf/answers/1528487411/.
与Meteor开发人员的讨论表明,将来通过修订DDP和发布 - 订阅API来解决此问题,合并框将被删除,客户端将处理合并.这将节省服务器上的CPU /内存,并允许通过线路发送更大的数据集.
我有一个Meteor应用程序,它在本地服务器上运行以进行开发(http://10.0.2.10:3000).该ROOT_URL
设置正确,以便__meteor_runtime_config__.ROOT_URL
等于这个网址.当然,该应用程序在10.0.2.0/24内的客户端计算机上的浏览器中运行良好.该应用程序也在我的Android手机上的移动chrome/firefox上工作正常,这也是10.0.2.0/24的一部分.然而,当我尝试在这款手机上运行它meteor run android-device --mobile-server http://10.0.2.10:3000/
时会出现奇怪的事情:
当应用程序第一次启动时(或者在我清除所有应用程序数据后第一次启动)它会像应该的那样工作(来自数据库的内容被加载)几秒钟.然后应用程序重新加载,并且不再加载来自数据库的任何远程内容.我添加了以下函数来查看Meteor尝试连接的位置:
Meteor.startup(function(){
console.log(__meteor_runtime_config__.ROOT_URL);
})
Run Code Online (Sandbox Code Playgroud)
第一次加载远程内容时,它会像我期望的那样返回http://10.0.2.10:3000/.第二次没有加载远程内容时,它返回http://10.0.2.2:3000/.
现在的问题是,为什么Meteor/Cordova这样做,我该如何阻止这种行为呢?因为显然我无法以这种方式测试应用程序.当我有一个FQDN和HTTPS代理时,我还不确定它是否可以在生产中工作,但这已经超出了这一点.
我试图找到10.0.2.2,因为我的局域网中没有任何东西在那里运行,我没有在任何地方指定这个IP,并且发现它/cordova-build/www/application/index.html
似乎是从中生成的boilerplate_web.cordova.html
(请参阅此链接https://searchcode.com/codesearch/view/91819963 /).但是,Meteor提供了使用文件夹覆盖这些生成的文件的可能性cordova-build-override
,因此我删除了整个文件
if (/Android/i.test(navigator.userAgent)) {
//[...]
}
Run Code Online (Sandbox Code Playgroud)
阻止并添加一个简短的console.log('removed')
.这被调用所以我知道覆盖是成功的,当我grep通过整个构建的.apk文件10.0.2.2再也找不到 - 仍然行为是相同的.
有什么想法正在发生什么,怎么做?
我ws://example.com:3000/websocket
用来连接Android-ddp
流星应用程序.流星正在奔跑example.com:3000
.它工作正常.
现在我使用mup
相同的URL 部署了应用程序,example.com
并且port: 3000
.我可以在浏览器上访问该应用程序,但无法使用它Android-ddp
.它只是不会连接.
我可能做错了什么?