Skip to content
kjunichi edited this page Mar 18, 2013 · 11 revisions

概要

WAN側で使用。

3G回線経由でWebSocketで来た要求をHTTPに変換してHTTP Proxyへ転送する。

HTTP Proxyからの応答をWebSocketに変換して3G回線経由でLAN側に返す。

動作イメージ

iPhone4S<-(websocket)-> ws2http2.js<-(http)->HTTP Proxy<->インターネット

ポート番号

WebSocketの待ち受け

8123

WebSocket(socket.io)での受け渡しのデータ構造

data['wid']

WebSocketでやり取りするデータの識別子。 データの送受信が前後することがあるので、クライアントとの間で 識別子が必要となる。

data['httpdata']

WebSocketでやり取りするデータの本体。Base64エンコードされて格納。

処理

WebSocketからの接続要求時 connection

wstohttp,httpendの定義を行う

WebSocketからのデータ受信時 wstohttp

HTTP Proxyへの接続がされていない場合、

  • 接続を行う。
  • proxys[data['wid']]に接続したソケットを格納する。
  • data['httpdata']をBase64デコードして、HTTP Proxyへ送信する。

HTTP Proxyへの接続がされる場合

  • proxys[data['wid']]で接続済みのHTTP Proxyのソケットを取得
  • 取得したソケットが切断ずみの場合、WebSocketにhttpendを返す。
  • data['httpdata']をBase64デコードして、HTTP Proxyへ送信する。

WebSocketからのHTTP終了通知受信時 httpend

widに該当のHTTP Proxyのソケットが接続中であれば、 終了させ、proxys[data['wid']]を空にする。

HTTP Proxyからのデータ受信時 data

WebSocketへhttptowsメッセージに{httpdata:Base64したHTTP Proxyからの応答, wid:使用したHTTP Proxyのwid}を入れて返す。

HTTP Proxyから接続の切断時 end

WebSocketへhttpendメッセージに{wid:使用したHTTP Proxyのwid}を入れて返す。

主要変数

  • wid aaa
  • data['wid'] 作成済みのHTTP Proxyを識別するIDを格納
  • data['httpdata'] LAN側のHTTPの内容がBase64化されて格納されている
  • proxys HTTP Proxyへのsocket?を複数保持。widで管理。
  • proxys[data['wid']] widに対応する作成済みのHTTP Proxyへのソケット

LAN側のリソース

myproxy4.js

補足

pause

resume