websockets を proxy 環境でも利用する場合の注意点
ええとコメント頂いたのでまじめに書くことにします。
(ちょっとアングラな世界でドライバ作ってました)
現在のwebsocketsのクライアント側の実装でproxy越えをしようとする場合、サーバ側で特殊な考慮をしておかないと繋がらない環境が多いと思います。
ちょっとややこしいので順を追って説明します。
・クライアント側の実装でproxy越えする際にはProxyに対し CONNECT を発行する
・proxyでCONNECTできるのは接続先ポートがhttps(443)に制限されている場合が多い
(squidはデフォルト。443以外のSSLポートをSquidでプロキシするには辺り参考)
・一方、サーバ側はというとhttps使ってるならhttpsの場合が多い。
・websocketsで443に繋いだとしてもSSLのハンドシェークは行われない
以上から、proxy経由でのwebsocketsをなるべく利用可能にするならrawな(SSLでない)websocketsの口をポート443であけて置く必要があります。このblogに張ったwebsockets chatはこの対応をやってます。(httpsは潰してますw)
ま、現状の実装(websockets, proxy)での話しなのでこの先は分かりませんが…。
sqlite断念
このBlog、pdo-sqliteで運用してたんですがwordpress 2.9系に成ってからかなり不安定な感じなのを修正しつつだましだまし使ってきましたが耐えきれずmysqlに再逆移行しました。
所々、文字化け等有るかもorz
golangリリースニュース(w
2010-03-04のリリースで言語仕様に変更が有った模様。
http://go.googlecode.com/hg/doc/devel/release.html
strings.Bytes(x) -> []byte(x)
strings.Runes(x) -> []int(x)
って、結構当たり大きいような。