質問編集履歴
4
頂いた回答を元に修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -102,6 +102,26 @@
|
|
102
102
|
しかし、イベントを発火させた際、命令1が来たといった出力は変わらず今まで接続されていた
|
103
103
|
分出力されてしまいます。
|
104
104
|
|
105
|
+
###試したこと3
|
106
|
+
回答頂いた様に下記の様に実装致しました。
|
105
107
|
|
108
|
+
```
|
109
|
+
socket.on('disconnect',(reason)=>{
|
110
|
+
//delete clients;
|
111
|
+
console.log(socket.id)
|
112
|
+
delete clients[socket.id];
|
113
|
+
console.log(socket.id+'_disconnected')
|
114
|
+
});
|
115
|
+
```
|
116
|
+
しかし、上記の部分の出力は以下のように、プロパティが消えず
|
117
|
+
更新しても今まで接続された分出力されてしまいます。
|
118
|
+
|
119
|
+
```
|
120
|
+
[Time] (socket.id1)
|
121
|
+
[Time] (socket.id1_disconnected)
|
122
|
+
|
123
|
+
```
|
124
|
+
|
125
|
+
|
106
126
|
マルチポスト
|
107
127
|
[Stack over flow](https://ja.stackoverflow.com/questions/40169/socket-io%e3%81%a7%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e3%82%92%e5%88%87%e6%96%ad%e3%81%97%e3%81%a6%e3%82%82%e6%8e%a5%e7%b6%9a%e3%81%8c%e5%88%87%e3%82%8c%e3%81%be%e3%81%9b%e3%82%93)
|
3
出力を記述
title
CHANGED
File without changes
|
body
CHANGED
@@ -36,19 +36,41 @@
|
|
36
36
|
|
37
37
|
io.on('connection',(socket)=>{
|
38
38
|
clients[socket.id]= socket;
|
39
|
+
console.log(socket.id+'connected')
|
39
40
|
watcher.on('add',function(path){
|
40
41
|
///fsでファイルを読む処理をしています。
|
41
42
|
io.json.to(socket.id).emit(~~~);
|
42
43
|
});// watcher
|
43
44
|
socket.on('命令1',function(data){
|
45
|
+
console.log(socket.id)
|
44
46
|
console.log('命令1が来た')
|
45
47
|
///fsでファイルを消しています。
|
46
48
|
});
|
47
49
|
socket.on('disconnect',(reason)=>{
|
48
50
|
delete clients;
|
51
|
+
console.log(socket.id+'disconnected')
|
49
52
|
});
|
50
53
|
});
|
51
54
|
```
|
55
|
+
###出力
|
56
|
+
例えば3回更新した時はこのように出力されます。
|
57
|
+
```
|
58
|
+
[Time] (socket.id1) connected
|
59
|
+
[Time] (socket.id1) disconnected
|
60
|
+
[Time] (socket.id2) connected
|
61
|
+
[Time] (socket.id2) disconnected
|
62
|
+
[Time] (socket.id3) connected
|
63
|
+
```
|
64
|
+
この時にemitさせるとこのように出力されます
|
65
|
+
```
|
66
|
+
[Time] (socket.id1)
|
67
|
+
[Time] 命令1が来た
|
68
|
+
[Time] (socket.id2)
|
69
|
+
[Time] 命令1が来た
|
70
|
+
[Time] (socket.id3)
|
71
|
+
[Time] 命令1が来た
|
72
|
+
```
|
73
|
+
|
52
74
|
###試したこと
|
53
75
|
https://teratail.com/questions/97749
|
54
76
|
で回答頂いた通り、下記の様に変更した所Last few GCsが発生してしまいました。
|
2
追記した
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Socket.IOのクライアント
|
1
|
+
Socket.IOのクライアントを切断しても、今まで接続されていた分イベントが飛ぶ
|
body
CHANGED
@@ -62,6 +62,24 @@
|
|
62
62
|
///
|
63
63
|
|
64
64
|
```
|
65
|
+
###試したこと2
|
66
|
+
実際接続されているクライアントはどれだけあるかを確認するため、
|
67
|
+
以下の様にコードを変更し、確認しました。
|
68
|
+
```
|
69
|
+
io.on('connection',(socket)=>{
|
70
|
+
var info = io.sockets.client();
|
71
|
+
var count = Oblect.keys(info.connected).length
|
72
|
+
console.log(info); //出力1
|
73
|
+
console.log(count); //出力2
|
74
|
+
clients[socket.id]= socket;
|
75
|
+
watcher.on('add',function(path){
|
76
|
+
・・・
|
77
|
+
```
|
78
|
+
結果としては出力1,2どちらも接続されている分しか出ませんでした。
|
79
|
+
例)2ブラウザで接続した際は、出力は2と出力
|
80
|
+
しかし、イベントを発火させた際、命令1が来たといった出力は変わらず今まで接続されていた
|
81
|
+
分出力されてしまいます。
|
65
82
|
|
83
|
+
|
66
84
|
マルチポスト
|
67
85
|
[Stack over flow](https://ja.stackoverflow.com/questions/40169/socket-io%e3%81%a7%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e3%82%92%e5%88%87%e6%96%ad%e3%81%97%e3%81%a6%e3%82%82%e6%8e%a5%e7%b6%9a%e3%81%8c%e5%88%87%e3%82%8c%e3%81%be%e3%81%9b%e3%82%93)
|
1
マルチポストを明記
title
CHANGED
File without changes
|
body
CHANGED
@@ -61,4 +61,7 @@
|
|
61
61
|
});// watcher
|
62
62
|
///
|
63
63
|
|
64
|
-
```
|
64
|
+
```
|
65
|
+
|
66
|
+
マルチポスト
|
67
|
+
[Stack over flow](https://ja.stackoverflow.com/questions/40169/socket-io%e3%81%a7%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e3%82%92%e5%88%87%e6%96%ad%e3%81%97%e3%81%a6%e3%82%82%e6%8e%a5%e7%b6%9a%e3%81%8c%e5%88%87%e3%82%8c%e3%81%be%e3%81%9b%e3%82%93)
|