🦷
認証付き Websocket にアクセスする node.js コードのサンプル
あらかじめ発行された Bearer Token を HTTP ヘッダーに引き渡さないとアクセスできない Websocket URL にアクセスする node.js プログラムのサンプルです。
const StreamingURL = 'https://example.com/streaming/'
const StreamingHeaders = ['Authorization: Bearer ' + AccessToken, 'User-Agent: example']
const websocket = new WebSocketClient()
websocket.on('connectFailed', (error) => {
console.log('Connect failed : %s', error)
/// 接続に失敗したら 3 秒待って再度リトライしてみる
sleep(3).then(() => { this.start() })
})
websocket.on('connect', (connection) => {
const StreamName = 'public'
const SubscribeMessage = { type: 'subscribe', stream: StreamName }
connection.sendUTF(JSON.stringify(SubscribeMessage))
console.log('Subscribe started : %s, %s', this.StreamingURL, JSON.stringify(SubscribeMessage))
connection.on('error', (error) => {
console.log('Connection Error : %s', error)
sleep(3).then(() => { this.start() })
})
connection.on('close', () => {
console.log('Connection Closed.')
sleep(3).then(() => { this.start() })
})
connection.on('message', async (message) => {
if (message.type === 'utf8') {
const msg = JSON.parse(message.utf8Data)
switch (msg.event) {
case 'update':
/// update 処理を実行する
break
case 'delete':
/// delete 処理を実行する
break
}
}
})
})
/// connect の 第4引数に Bearer Token を含んだ HTTP ヘッダを渡すことで Websocket の認証を通過させる
websocket.connect(StreamingURL, null, null, StreamingHeaders)
Discussion