teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

頂いた回答を元に修正

2017/12/20 11:38

投稿

kishi_kun
kishi_kun

スコア26

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

出力を記述

2017/12/20 11:38

投稿

kishi_kun
kishi_kun

スコア26

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

追記した

2017/12/13 22:23

投稿

kishi_kun
kishi_kun

スコア26

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

マルチポストを明記

2017/12/13 13:01

投稿

kishi_kun
kishi_kun

スコア26

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)