正在从socket.io中删除检测信号调试消息



在编写使用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秒

服务器应向客户

如果你想让心跳/消息保持不变,然后向上调整这些时间,你必须在自己的系统上进行测试,但要遵循一般的指导原则/比率,然后从那里调整/测试。

最新更新