Open3

slack

yukinagaeyukinagae

socket modeとは?

You might be developing behind a corporate firewall, or you might simply have security concerns with that setup.

HTTPではなくWebSocketで通信するslackアプリのモード。
see: https://qiita.com/south37/items/6f92d4268fe676347160

「WebSocketってover HTTPだから同様にHTTPなのでは?」と思ったけど、ハンドシェイクだけHTTPでアップグレードしてその後はTCP。

参考資料

https://api.slack.com/apis/connections

yukinagaeyukinagae

socket modeをいつ使う?

Sometimes, you can't—or don't wish to—create a static HTTP endpoint for Slack to communicate with your app.
You might be developing behind a corporate firewall, or you might simply have security concerns with that setup.

↑ 開発の時か社内イントラ内のアプリとかの場合に使うっぽい。つまり、公開するアプリの場合にはsocket modeは使わず、普通にHTTPのエンドポイントのモードでやり取りすることになる。

yukinagaeyukinagae

開発時にはsocket modeはかなり便利

以下のようにlocalのPCでアプリ起動して動作確認ができる、デプロイを意識しなくて良いので開発体験高い。

仕組みよくわかってないけど、たぶん内部的にはlocalでアプリ起動した際にslackの中央サーバーとハンドシェイクしてコネクション確立 → slack workspace内のイベントを中央サーバーで経由してlocalのPCにデータ連携しているんだと思う。

$ node app.js
[INFO]  socket-mode:SocketModeClient:0 Going to establish a new connection to Slack ...
⚡️ Bolt app is running!
[INFO]  socket-mode:SocketModeClient:0 Now connected to Slack