質問編集履歴
3
chokidarについて記述
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -71,6 +71,8 @@ 
     | 
|
| 
       71 
71 
     | 
    
         
             
            しかしLast few GCsが起こるようになってしまいました。
         
     | 
| 
       72 
72 
     | 
    
         
             
            以下の書き方は正しかったのでしょうか。
         
     | 
| 
       73 
73 
     | 
    
         
             
            ```
         
     | 
| 
      
 74 
     | 
    
         
            +
            var chokidar = require('chokidar')
         
     | 
| 
      
 75 
     | 
    
         
            +
            var watcher = chokidar.watch
         
     | 
| 
       74 
76 
     | 
    
         
             
            ///
         
     | 
| 
       75 
77 
     | 
    
         
             
            sockets.on('connection', function(socket) {
         
     | 
| 
       76 
78 
     | 
    
         
             
              clients[socket.id] = socket;
         
     | 
2
コメントに応じて追記
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -32,7 +32,7 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
            ///
         
     | 
| 
       33 
33 
     | 
    
         
             
            ```
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
            ###追記 
     | 
| 
      
 35 
     | 
    
         
            +
            ###追記
         
     | 
| 
       36 
36 
     | 
    
         
             
            下記のようにソースを書きなおしましたが
         
     | 
| 
       37 
37 
     | 
    
         
             
            3回ブラウザを更新すると、4回分上記のイベントが発行されているような挙動は変わらず
         
     | 
| 
       38 
38 
     | 
    
         
             
            コンソールへの出力もコメント1とコメント2で同様のIDが出力されています。
         
     | 
| 
         @@ -46,6 +46,15 @@ 
     | 
|
| 
       46 
46 
     | 
    
         
             
            sockets.on('connection', function(socket) {
         
     | 
| 
       47 
47 
     | 
    
         
             
              clients[socket.id] = socket;
         
     | 
| 
       48 
48 
     | 
    
         
             
            ///
         
     | 
| 
      
 49 
     | 
    
         
            +
            watcher.on('add'function(**){
         
     | 
| 
      
 50 
     | 
    
         
            +
            try{
         
     | 
| 
      
 51 
     | 
    
         
            +
            while(socket.connected){
         
     | 
| 
      
 52 
     | 
    
         
            +
            io.json.to(socket.id).emit(~~~);
         
     | 
| 
      
 53 
     | 
    
         
            +
            }
         
     | 
| 
      
 54 
     | 
    
         
            +
            catch(e){
         
     | 
| 
      
 55 
     | 
    
         
            +
            }
         
     | 
| 
      
 56 
     | 
    
         
            +
            )};
         
     | 
| 
      
 57 
     | 
    
         
            +
            ///
         
     | 
| 
       49 
58 
     | 
    
         | 
| 
       50 
59 
     | 
    
         
             
              socket.on('disconnect', function() {
         
     | 
| 
       51 
60 
     | 
    
         
             
                conlose.log([socket.id]);  //コメント1
         
     | 
| 
         @@ -54,4 +63,25 @@ 
     | 
|
| 
       54 
63 
     | 
    
         
             
              });
         
     | 
| 
       55 
64 
     | 
    
         
             
            });
         
     | 
| 
       56 
65 
     | 
    
         
             
            ///
         
     | 
| 
      
 66 
     | 
    
         
            +
            ```
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            ###追記2
         
     | 
| 
      
 70 
     | 
    
         
            +
            下記のようにソースを書きなおしました
         
     | 
| 
      
 71 
     | 
    
         
            +
            しかしLast few GCsが起こるようになってしまいました。
         
     | 
| 
      
 72 
     | 
    
         
            +
            以下の書き方は正しかったのでしょうか。
         
     | 
| 
      
 73 
     | 
    
         
            +
            ```
         
     | 
| 
      
 74 
     | 
    
         
            +
            ///
         
     | 
| 
      
 75 
     | 
    
         
            +
            sockets.on('connection', function(socket) {
         
     | 
| 
      
 76 
     | 
    
         
            +
              clients[socket.id] = socket;
         
     | 
| 
      
 77 
     | 
    
         
            +
            ///
         
     | 
| 
      
 78 
     | 
    
         
            +
            watcher.on('add'function(**){
         
     | 
| 
      
 79 
     | 
    
         
            +
            try{
         
     | 
| 
      
 80 
     | 
    
         
            +
            while(socket.connected){
         
     | 
| 
      
 81 
     | 
    
         
            +
            io.json.to(socket.id).emit(~~~);
         
     | 
| 
      
 82 
     | 
    
         
            +
            }
         
     | 
| 
      
 83 
     | 
    
         
            +
            catch(e){
         
     | 
| 
      
 84 
     | 
    
         
            +
            }
         
     | 
| 
      
 85 
     | 
    
         
            +
            )};
         
     | 
| 
      
 86 
     | 
    
         
            +
            //
         
     | 
| 
       57 
87 
     | 
    
         
             
            ```
         
     | 
1
頂いた回答を元に修正
    
        title	
    CHANGED
    
    | 
         @@ -1,1 +1,1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            クライアント 
     | 
| 
      
 1 
     | 
    
         
            +
            Node.js及びsocket.ioにおいて、切断されたクライアントのsocket.idを廃棄する方法について
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -30,4 +30,28 @@ 
     | 
|
| 
       30 
30 
     | 
    
         
             
             delete socket.id;
         
     | 
| 
       31 
31 
     | 
    
         
             
            }
         
     | 
| 
       32 
32 
     | 
    
         
             
            ///
         
     | 
| 
      
 33 
     | 
    
         
            +
            ```
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            ###追記1
         
     | 
| 
      
 36 
     | 
    
         
            +
            下記のようにソースを書きなおしましたが
         
     | 
| 
      
 37 
     | 
    
         
            +
            3回ブラウザを更新すると、4回分上記のイベントが発行されているような挙動は変わらず
         
     | 
| 
      
 38 
     | 
    
         
            +
            コンソールへの出力もコメント1とコメント2で同様のIDが出力されています。
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            ```
         
     | 
| 
      
 42 
     | 
    
         
            +
            ///
         
     | 
| 
      
 43 
     | 
    
         
            +
            let clients = {};
         
     | 
| 
      
 44 
     | 
    
         
            +
            ///
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            sockets.on('connection', function(socket) {
         
     | 
| 
      
 47 
     | 
    
         
            +
              clients[socket.id] = socket;
         
     | 
| 
      
 48 
     | 
    
         
            +
            ///
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              socket.on('disconnect', function() {
         
     | 
| 
      
 51 
     | 
    
         
            +
                conlose.log([socket.id]);  //コメント1
         
     | 
| 
      
 52 
     | 
    
         
            +
                delete clients[socket.id];
         
     | 
| 
      
 53 
     | 
    
         
            +
                console.log([socket.id]);   //コメント2
         
     | 
| 
      
 54 
     | 
    
         
            +
              });
         
     | 
| 
      
 55 
     | 
    
         
            +
            });
         
     | 
| 
      
 56 
     | 
    
         
            +
            ///
         
     | 
| 
       33 
57 
     | 
    
         
             
            ```
         
     |