在编写使用socket.io的应用程序时,我发现心跳调试消息淹没了我想要看到的调试消息。只有心跳才能关闭调试消息的最佳方法是什么?
从socket.io中删除检测信号调试消息
使用动态环境配置设置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')
});
因此,为了控制心跳,首先要确保你充分利用express/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配置wiki页面上找到所有选项,这是一个与这个问题最相关的区块报价:
心跳超时默认为60秒
客户端的超时,我们应该从服务器。这应该大于心跳间隔此值在成功后发送到客户端握手。
心跳间隔默认为25秒
服务器应向客户
如果你想让心跳/消息保持不变,然后向上调整这些时间,你必须在自己的系统上进行测试,但要遵循一般的指导原则/比率,然后从那里调整/测试。