質問編集履歴

3

chokidarについて記述

2017/11/09 10:56

投稿

kishi_kun
kishi_kun

スコア26

test CHANGED
File without changes
test CHANGED
@@ -144,6 +144,10 @@
144
144
 
145
145
  ```
146
146
 
147
+ var chokidar = require('chokidar')
148
+
149
+ var watcher = chokidar.watch
150
+
147
151
  ///
148
152
 
149
153
  sockets.on('connection', function(socket) {

2

コメントに応じて追記

2017/11/09 10:56

投稿

kishi_kun
kishi_kun

スコア26

test CHANGED
File without changes
test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
 
68
68
 
69
- ###追記
69
+ ###追記
70
70
 
71
71
  下記のようにソースを書きなおしましたが
72
72
 
@@ -94,6 +94,24 @@
94
94
 
95
95
  ///
96
96
 
97
+ watcher.on('add'function(**){
98
+
99
+ try{
100
+
101
+ while(socket.connected){
102
+
103
+ io.json.to(socket.id).emit(~~~);
104
+
105
+ }
106
+
107
+ catch(e){
108
+
109
+ }
110
+
111
+ )};
112
+
113
+ ///
114
+
97
115
 
98
116
 
99
117
  socket.on('disconnect', function() {
@@ -111,3 +129,45 @@
111
129
  ///
112
130
 
113
131
  ```
132
+
133
+
134
+
135
+
136
+
137
+ ###追記2
138
+
139
+ 下記のようにソースを書きなおしました
140
+
141
+ しかしLast few GCsが起こるようになってしまいました。
142
+
143
+ 以下の書き方は正しかったのでしょうか。
144
+
145
+ ```
146
+
147
+ ///
148
+
149
+ sockets.on('connection', function(socket) {
150
+
151
+ clients[socket.id] = socket;
152
+
153
+ ///
154
+
155
+ watcher.on('add'function(**){
156
+
157
+ try{
158
+
159
+ while(socket.connected){
160
+
161
+ io.json.to(socket.id).emit(~~~);
162
+
163
+ }
164
+
165
+ catch(e){
166
+
167
+ }
168
+
169
+ )};
170
+
171
+ //
172
+
173
+ ```

1

頂いた回答を元に修正

2017/10/29 16:19

投稿

kishi_kun
kishi_kun

スコア26

test CHANGED
@@ -1 +1 @@
1
- クライアントが切断されたらsocket.idを廃棄する方法について
1
+ Node.js及びsocket.ioにおいて、切断されたクライアントsocket.idを廃棄する方法について
test CHANGED
@@ -63,3 +63,51 @@
63
63
  ///
64
64
 
65
65
  ```
66
+
67
+
68
+
69
+ ###追記1
70
+
71
+ 下記のようにソースを書きなおしましたが
72
+
73
+ 3回ブラウザを更新すると、4回分上記のイベントが発行されているような挙動は変わらず
74
+
75
+ コンソールへの出力もコメント1とコメント2で同様のIDが出力されています。
76
+
77
+
78
+
79
+
80
+
81
+ ```
82
+
83
+ ///
84
+
85
+ let clients = {};
86
+
87
+ ///
88
+
89
+
90
+
91
+ sockets.on('connection', function(socket) {
92
+
93
+ clients[socket.id] = socket;
94
+
95
+ ///
96
+
97
+
98
+
99
+ socket.on('disconnect', function() {
100
+
101
+ conlose.log([socket.id]);  //コメント1
102
+
103
+ delete clients[socket.id];
104
+
105
+ console.log([socket.id]); //コメント2
106
+
107
+ });
108
+
109
+ });
110
+
111
+ ///
112
+
113
+ ```