narou icon indicating copy to clipboard operation
narou copied to clipboard

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

Open jam7 opened this issue 7 years ago • 4 comments

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

jam7 avatar May 07 '17 12:05 jam7

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

whiteleaf7 avatar May 08 '17 05:05 whiteleaf7

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

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

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

  • http://qiita.com/yuba/items/00fc1892b296fb7b8de9
  • http://kumama.org/2010/03/websockets-proxy-trick/
  • http://blog.mitsuruog.info/2012/10/websocket.html proxyの設定確認は、ここに乗ってる http://websocketstest.com/ でできました

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

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

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

jam7 avatar May 09 '17 09:05 jam7

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

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

whiteleaf7 avatar Sep 15 '18 16:09 whiteleaf7

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

whiteleaf7 avatar Sep 15 '18 16:09 whiteleaf7