在编写使用socket.io的应用程序时,我发现心跳调试消息淹没了我想看到的调试消息。关闭心跳的调试消息的最佳方法是什么?
答案 0 :(得分:1)
使用动态环境配置设置socket.io,对于开发环境,请关闭“心跳间隔”
以下是一些提示,其中大部分来自socketIO v09 wiki的Configuring-Socket.IO页面。
var io = require('socket.io').listen(80);
// This is sugar for if process.env.NODE_ENV==='production'
io.configure('production', function(){
// send minified client
io.enable('browser client minification');
// apply etag caching logic based on version number
io.enable('browser client etag');
io.enable('browser client gzip'); // gzip the file
io.set('log level', 1); // reduce logging
// enable all transports
// (optional if you want flashsocket support,
// please note that some hosting
// providers do not allow you to create servers that listen on a
// port different than 80 or their
// default port)
io.set('transports', [
'websocket'
, 'flashsocket'
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);
});
io.configure('development', function(){
io.set('heartbeats', false); //removes heartbeats
io.set('log level', 1); // reduces all socket.io logging, including heartbeats.
});
这样做,然后你对生产中的心跳(默认)很好,当你在它的时候 - 你得到了基本的建议生产设置。
此外,根据框架,或者在express / socket.io / top-level-app制作方式的确切位置,您可能会有类似的设置。
app.io.enable('browser client minification');
或
app.configure(function() {
app.enable('junny')
app.set('foo', 'bar')
});
因此,要控制心跳,首先要确保您的快速/ api日志记录得到充分利用,因此请加载您的应用:
$ DEBUG=* node ./app.js
然后检测您是否处于开发环境中(最顶级的方式):
if (process.env.NODE_ENV === 'development') {
io.set('heartbeat interval', 60*750);
}
// 60*750 = 45000ms = 45 seconds.
这会将心跳间隔变为45秒。
可以在socket.io configuration wiki page找到所有选项,这是与此问题最相关的块引用:
心跳超时默认为60秒
客户端的超时,我们应该从中获得心跳 此间隔内的服务器。这应该大于心跳 间隔。成功后,此值将发送到客户端 握手。
心跳间隔默认为25秒
服务器发送新心跳时的超时时间 客户端。
如果您希望心跳/消息仍然向上调整这些时间,则必须在您自己的系统上进行测试,但请遵循一般准则/比率,然后从那里进行调整/测试。