whiteleaf7 / narou

Narou.rb - 小説家になろうのダウンローダ&縦書き整形&管理アプリ。Kindle(などの電子書籍端末)でなろうを読む場合に超便利です!
Other
512 stars 55 forks source link

push_serverにproxy越しに通信できない #170

Open jam7 opened 7 years ago

jam7 commented 7 years ago

http_proxyを設定しているPCから、web UIに接続すると、web UIはhttpなので問題ないのですが、push_serverが違うようで、以下のメッセージが出て、まんなかの黒い部分に状況が表示されません。

no_proxyなどで直接見に行くようにすれば問題ないのですが、問題があるということだけ、報告しておきます。#164 の人も似たような話なのかもしれません。

WebSocket connection to 'ws://192.168.1.9:8001/' failed: Establishing a tunnel via proxy server failed
whiteleaf7 commented 7 years ago

websocketのライブラリがproxyに対応してない気がするので、ライブラリにプロキシ対応コードを入れる必要がある気がする。 ライブラリのソースコード自体は Narou.rb に内包してしまっているので、直接修正してしまうことは可能。 PRお待ちしています :)

jam7 commented 7 years ago

websocketに接続するのは、クライアント側で動いているjsみたいですね。

直接動かす場合、clinet:narou.library.js  → proxy → narou.rb
dockerの場合、client:narou.library.js → proxy → docker-host → narou.rb

みたいになりますね。このproxyの設定でwebsocketを跳ねていたみたいです。 squidのデフォルト設定では跳ねてしまうとか、色々難しい問題があるようです。 参考になりそうなエントリを以下に。

で、修正方法なんですが、以下になるようです。

  1. wssなら動作するのでwssを使う → narouの修正が必要
  2. proxyの設定を変えてwsのまま → proxyの設定変更が必要

後者をやってみたつもりなんですが、どうもうまくいっていません。 とまあ、状況更新でした。^^

whiteleaf7 commented 6 years ago

Narou.rb の使っている websocket サーバライブラリは、SSL 未対応 つまり wss 使用不可

wss が使えるライブラリに入れ替える必要がある。しかも Windows を考慮すると、エクステンションのコンパイルが必要なネイティブなライブラリは不可なので、有名どころは無理(Railsで使ってるやつとか) 一応 pure Ruby で WebSocket ライブラリはあるっぽいから検討 関連 issue https://github.com/whiteleaf7/narou/issues/197

whiteleaf7 commented 6 years ago

入れ替えたとしてもさらに Webrick で SSL を使えるようにする必要がある。 一応使えるが証明書関係で面倒くさい(オレオレ証明書でいいならわりかし簡単だが)