Chrome downloads API の問題点
◆ download の開始しようとしてるところで中断するとソケットが開放されない
◆ 使用できるソケットを待機しています がずっと続く
◆ ブラウザ再起動すればなんとかなった
◆ 使用できるソケットを待機しています がずっと続く
◆ ブラウザ再起動すればなんとかなった
前に解説記事をかいた downloads API ですが問題がありました
使い方が悪い部分もありますが バグといってもいいかもしれないです
すると ダウンロードはされないのですが ダウンロードしようとしたサイトにつなげなくなります
「使用できるソケットを待機しています」というメッセージが左下にで続けて接続できないです
chrome://net-internals/#sockets
でソケットの状況を確認できます

Name のところにあるようにドメインごとに管理されてるようです
ダウンロードを開始しようとした時にタブを閉じて強制終了するとソケットを確保したまま解放しないようで ここの Active の数が 6 になっていました
状態は pending です
一番上の表にある Max Per Group が 6 つなので 6 つダウンロードが途中で止まっているとソケットに空きがない状態です
強制終了したせいで残ってしまったソケットはいつまで待っても解放されないのでずっと待機し続けます
管理はドメインごとなので別のページを開けば問題ないので気づきにくそうですが 拡張機能を作るときには困るところです
普通に使っていて 「使用できるソケットを待機しています」 が出るのは 大量に同時接続してるせいなので 待てば通信を終えたソケットが空いて接続できるようになるのですが この場合はいくら待っても空かないです
最終手段の再起動(Chromeの)で直りましたがブラウザの再起動はあまりしたくないものです
早く改善してほしいですね
使い方が悪い部分もありますが バグといってもいいかもしれないです
問題
chrome.downloads.download 関数でダウンロードを開始しようとしているときにそのタブを閉じて強制終了させますすると ダウンロードはされないのですが ダウンロードしようとしたサイトにつなげなくなります
「使用できるソケットを待機しています」というメッセージが左下にで続けて接続できないです
原因
原因はメッセージのとおり 使用できるソケットがないからですchrome://net-internals/#sockets
でソケットの状況を確認できます

Name のところにあるようにドメインごとに管理されてるようです
ダウンロードを開始しようとした時にタブを閉じて強制終了するとソケットを確保したまま解放しないようで ここの Active の数が 6 になっていました
状態は pending です
一番上の表にある Max Per Group が 6 つなので 6 つダウンロードが途中で止まっているとソケットに空きがない状態です
強制終了したせいで残ってしまったソケットはいつまで待っても解放されないのでずっと待機し続けます
管理はドメインごとなので別のページを開けば問題ないので気づきにくそうですが 拡張機能を作るときには困るところです
普通に使っていて 「使用できるソケットを待機しています」 が出るのは 大量に同時接続してるせいなので 待てば通信を終えたソケットが空いて接続できるようになるのですが この場合はいくら待っても空かないです
対策
上のボタンで flush してみても改善せず キャッシュや cookie のクリアをしても改善しませんでした最終手段の再起動(Chromeの)で直りましたがブラウザの再起動はあまりしたくないものです
早く改善してほしいですね
COMMENT
コメント一覧 (5)
-
- 2019/06/30 23:31
- 「使用できるソケットを待機しています」が頻発して困っているのですが、何か良い対策法はありませんでしょうか?
-
- 2019/07/01 21:54
-
>>1
記事にあるような Downloads API を使ったとき のことでしょうか?
私の方は最近は特に発生していないのですが やはり変に中断させたりしてないからだと思います
この機能を使うときに中断させないように注意して もししてしまったらブラウザ再起動しかないんだと思います
-
- 2019/07/13 12:58
-
ご返信頂きありがとうございます。
> chrome://net-internals/#sockets
> でソケットの状況を確認できます
この画面は現在でも出ますでしょうか?
-
- 2019/07/13 14:19
-
>>3
画面自体はありますが表示されるのはボタンだけで 詳細情報は確認できないです
Chrome 71 で Sockets 画面に限らず net-internals は全面的に削除されたみたいです
https://bugs.chromium.org/p/chromium/issues/detail?id=892454
イベント関係なら chrome://net-export/ のページからログをローカルファイルに出力するようにして 専用のビュワー (https://chromium.googlesource.com/catapult/+/master/netlog_viewer/) を使って表示できるみたいです
インストールとかしなくてもこのページ (https://netlog-viewer.appspot.com/#import) でファイル指定すればできそう
ただ 試してないのでわかりませんが ソケットの現在の状態となるとイベントから表示するのは難しそうな気がします
ログファイルを使って表示なので現在のリアルタイムじゃなくてログファイルをビュワーに入れたタイミングのものになりますし
-
- 2019/07/13 19:01
-
詳しく教えて下さりありがとうございます!
主に複数の動画の視聴やDLの際によく「ソケットの待機」で悩まされており、何か解決策はないかとネットを漁っていてこのサイトに出会いました。
「chrome://net-internals/#sockets」の解決策を載せている他サイトも何か所か見ていましたが、やはり現在ではその方法は使えないのですね。。。
同様に悩まれている方も多そうな問題だと思うのですが、すっきり解決出来るピンポイントな方法が見つからないのが悩ましいところです。