先日,いまさらですが社内でslackを使い始めることにしました.
社内のネットワークからの通信はすべてプロキシを通すようにしています.
この環境でslackを使おうとしたときちょっと引っかかったことがあり,ここに書かせていただきます.
発生したのは__メッセージが自動的に更新されない__という現象です.
要するに WebSocketでの通信がうまくいっていないのですが,はじめはその原因がわかりませんでした.Slack 接続をテストする
結局わかった原因はプロキシ自動設定(PAC)でした.
slackではwssスキームでWebSocket通信をおこないます.
PACファイルにはスキームやホストによってどのプロキシをどのように使うか(あるいは使わないか)を記述しますが,そのなかにwssスキームが書かれていなかったためプロキシを使わず直接接続しようとしていたというのが理由です.
どうしてプロキシを通れないのだろう,とばかり考えていて__そもそもプロキシを通ろうとしていない__,という可能性に気づかなかったのが間抜けでした(普段ならまず netstat と指が動くのに..).
function FindProxyForURL(url, host) {
var http_proxy = "PROXY http-proxy.example.com:8080";
if(url.substring(0,5) == "http:" ||
url.substring(0,6) == "https:" ||
url.substring(0,4) == "wss:" ) {
return http_proxy;
}
return "DIRECT";
}
(記述は大幅にはしょっています)
後になって考えてみればそれぞれ説明がつくのですが,当初はOSやアプリケーションによってWebSocketでの通信ができてみたりできなくてみたり,の不規則挙動に見え,切り分けに困りました.
あまり一般的ではないケースのようで,調べる中でGoogle等でも解決に近づける情報にいきあたりませんでしたので,記事に書かせていただくことにしました(ブログにでも書いたほうが適当だと思いますが,ブログをもっていないものでごめんなさい)
どなたかのお役に立てばうれしいです.
プロキシ ネットワーク のタグ追加のサジェスチョンをいただきました。
プロキシ については proxy の方が既存のタグ付けが多数であること、検索上は プロキシ自動設定 でひっかかることから不要と判断していました。
ネットワーク については、個人的にはspecificでなさすぎるように感じますが追加しておくことにします。