Socket.IO を利用する際に, HTTP ヘッダーに認証トークンや Cookie を設定したいというケースがあります. 従来 HTTP ヘッダーを Socket.IO で設定することは難しいとされていましたが, socket.io-client 1.4 以降では extraHeaders を用いて設定できるようになっています.
使い方
クライアント側で Socket.IO の接続を行う際にのオプションに extraHeaders を設定することで, リクエストに追加の HTTP ヘッダーを設定出来ます.
var socket = require('socket.io-client')('http://localhost', {
extraHeaders: {
Authorization: "Bearer authorization_token_here"
}
});
サーバー側では socket.request.headers でリクエストの HTTP ヘッダーを取得できます.
extraHeaders について
extraHeaders は socket.io-client 1.4 から利用出来るようになったオプションです. extraHeaders は socket.io-client のバックエンドを担う engine-io.client のバージョン 1.6 で追加されました.
その他
例えば, extraHeaders で Authorization ヘッダーを設定することで, 簡単に BASIC 認証に対応させることが出来ます. 簡易の認証として BASIC 認証を利用することは便利です.
この件について Stack Overflow にも回答を書きました.
