私のアプリケーションでは、すべてのソケットを追跡するオブジェクトを作成しています。
私はそれを次のように宣言します:
var sockets = {};
次に、新しいソケットが作成されたら、ソケットをsockets
オブジェクトに追加します。
sockets[socket.name] = socket;
これは、アプリケーションのロジックに必要です。そして、それは完璧に機能します。
私が抱えている問題はsockets
、サーバーが時々再起動するため、(バックアップ目的で) オブジェクトをファイルに保存したいときです。再起動が発生した場合にアクティブなソケットが失われることは望ましくありません。
次のようなファイルに保存しようとしました:
var outputFilenameee = 'sockets.json';
fs.writeFile(outputFilenameee, JSON.stringify(sockets), function(err) {
if(err) {
console.log(err);
} else {
console.log("sockets saved in " + outputFilenameee);
}
});
しかし、私はこのエラーが発生しています:
TypeError: 循環構造を JSON に変換しています
以下は、次の console.log ですsockets
。
{ '217.208.204.18:63695':
{ domain: null,
_events: { data: [Function], end: [Function] },
_maxListeners: 10,
_handle:
{ writeQueueSize: 0,
owner: [Circular],
onread: [Function: onread] },
_pendingWriteReqs: 0,
_flags: 0,
_connectQueueSize: 0,
destroyed: false,
errorEmitted: false,
bytesRead: 125,
_bytesDispatched: 0,
allowHalfOpen: false,
writable: true,
readable: true,
server:
{ domain: null,
_events: [Object],
_maxListeners: 10,
_connections: 1,
connections: [Getter/Setter],
allowHalfOpen: false,
_handle: [Object],
_connectionKey: '4:0.0.0.0:8080' },
_peername: { address: '217.208.204.18', family: 'IPv4', port: 63695 },
name: '217.208.204.18:63695' } }
これをファイルに保存するにはどうすればよいですか?