stream.twitter.comがSSLのみになったようです †
朝方4時だかにstream.twitter.com:80への接続がRefuseされるようになった。夕方になっても回復しないし、メンテ情報も特にないのでおかしいと思って調べていたらまさにぴったりの記事が見つかった。
なるほに。SSLで接続したらStreamもらえました。今回はHTTP接続を自力Socketを使ってやってるので、SSLを使う時はSSL用のSocketを使わなければならない。きょうび自力Socketなんて使うメリットはほとんどないけれど、HTTP Responseがストリーム的な扱いがされているのでこれを使ってる。SocketからSSLSocketにするのはやりようによっては簡単。
// before
final Socket sock = new Socket(InetAddress.getByName("stream.twitter.com"), 80);
// after
final SocketFactory factory = SSLSocketFactory.getDefault();
final Socket sock = factory.createSocket(InetAddress.getByName("stream.twitter.com"), 443);