jsマルチプレイヤーゲームでメモリリークがあります。私はクライアントがサーバーに接続されているときに多くのコールバックをバインドします。私の質問は、プレイヤーのテーブルからソケットを削除する前にコールバックのバインドを解除する必要がありますか?ここでソケットを削除する前にバインド解除コールバックが必要ですか?
は私のサンプルのコールバックです:ここで
Player.prototype.viewPortListenerInit = function(){
var self = this;
this.socket.on('clientViewPortResize', function(data){
self.clientViewPort = data;
});
};
は選手のリスト/ HashSetのにプレーヤーを追加します
this.list[socket.id] = new Player(socket);
そして、ここでは削除されます。
socket.on('disconnect', function(){
delete this.list[socket.id]
});
https://www.alexkras.com/simple-guide-to-finding-a-javascript-memory-leak-in-node-js/ 私はこれをスキミングしましたが、おそらくすべてを削除するのを忘れたようですものへの参照。 –
「削除」とはどういう意味ですか?そして、どこからそれをアンバインドしますか?本当に必要なのは、イベントをトリガする場所からソケットへの参照を削除することです。 – Bergi
私はプレイヤーのリストを持っており、このように削除を実行します:delete this.list [socket.id]; – peterSweter