narou
narou copied to clipboard
push_serverにproxy越しに通信できない
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
websocketのライブラリがproxyに対応してない気がするので、ライブラリにプロキシ対応コードを入れる必要がある気がする。 ライブラリのソースコード自体は Narou.rb に内包してしまっているので、直接修正してしまうことは可能。 PRお待ちしています :)
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/ でできました
で、修正方法なんですが、以下になるようです。
- wssなら動作するのでwssを使う → narouの修正が必要
- proxyの設定を変えてwsのまま → proxyの設定変更が必要
後者をやってみたつもりなんですが、どうもうまくいっていません。 とまあ、状況更新でした。^^
Narou.rb の使っている websocket サーバライブラリは、SSL 未対応 つまり wss 使用不可
wss が使えるライブラリに入れ替える必要がある。しかも Windows を考慮すると、エクステンションのコンパイルが必要なネイティブなライブラリは不可なので、有名どころは無理(Railsで使ってるやつとか) 一応 pure Ruby で WebSocket ライブラリはあるっぽいから検討 関連 issue https://github.com/whiteleaf7/narou/issues/197
入れ替えたとしてもさらに Webrick で SSL を使えるようにする必要がある。 一応使えるが証明書関係で面倒くさい(オレオレ証明書でいいならわりかし簡単だが)