Open3

iOS SimulatorでWebSocketをProxyできない

HIMURA TomohikoHIMURA Tomohiko

経緯

iOSでWebSocketを使っている。接続が失敗するときの動作を確認したくて、Charlesを用いてブロックしてみたが、うまくいかない。

参考 iOSで使う際の設定例
https://qiita.com/usagimaru/items/d340e87da98e62f99b60

まとめ

Starscream がProxyに対応していないため動かない。
URLSessionWebSocketTaskを使えば解決できる可能性がありそう。

--

このドキュメントは "Chatwork Tech Tips" の一環です。
その他の Tips も含めて @Chatwork_dev にて確認することができます 👨‍🏫

HIMURA TomohikoHIMURA Tomohiko

思考メモ

  • ブラウザではブロックできている。
  • 可能性としてはライブラリの問題の可能性が高いのではないか。
  • 例えば直接SocketをあつかったりするとProxyが考慮されない。この場合はProxyサーバーに対してTCP接続しなければならないのではないか。
  • 最近はiOS SDKに URLSessionWebSocketTaskというのがあるようだ
  • つかっているライブラリは Starscream だった。
  • READMEに TODO Proxy supportとかかれている
  • 4.0.4のREADME
HIMURA TomohikoHIMURA Tomohiko

思考メモ2 StarscreamはどのようにPorxy対応すればいいんだろう

  • TCPソケットをopenしたときはProxyの設定を利用しないと予想
  • OSからProxy設定情報をよみだして、そのアドレスとポートに直接アクセスして対応するんじゃないだろうか。