Socket.ioの1.0より前のバージョンでは、インスタンス化時にロガーオプションを使用してロガーを設定できたようですが、1.0以降はそれを行う可能性を見つけることができません。彼らがこのオプションを削除したのは正しいのですが、既存のモジュールを変更せずに、Socket.io が現在使用していると思われるデバッグ モジュールからのエラーを接続/リッスンすることで、これをバイパスできる良い方法はありますか? Bunyanでソケット メッセージをログに記録したい。
質問する
348 次
2 に答える
1
新しい socket.io でログインするには、次を使用できます。
DEBUG=* // all
DEBUG=socket.io:* // all in socket.io module
DEBUG=socket.io:server // only server debugger
于 2014-07-02T23:22:44.967 に答える
0
いくつかの調査の後、単純なラッパーを作成しました。
var wrapper = function (http, opts) {
var logCB = function (str) {
fs.writeFileSync("a.txt", "SOCKET.IO " + str + "\n", {flag: 'a'});
};
var io = require('socket.io')(http, opts);
var ret = {
'use': function (f) {
io.use(f);
},
'sockets': {
'on': function (evt, fn) {
logCB("ON " + evt);
io.sockets.on(evt, function (socket) {
var newSocket = Object.create(socket);
newSocket.on = function (ev, cb) {
socket.on(ev, function (data, ok) {
logCB("ON " + ev + " DATA " + JSON.stringify(data));
cb(data, ok);
});
};
newSocket.emit = function (ev, data) {
logCB("EMIT " + ev + " DATA " + JSON.stringify(data));
socket.emit(ev, data);
};
fn(newSocket);
});
}
}
};
return ret;
};
従来のリクエストの代わりに使用します。
httpServer.listen(80, ip);
var io = wrapper(httpServer, sockOpts);
良ければ改善してください。
于 2016-06-12T22:02:14.257 に答える