-
-
Notifications
You must be signed in to change notification settings - Fork 793
/
WebSocketConnectEvent.js
59 lines (53 loc) · 1.86 KB
/
WebSocketConnectEvent.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import WebSocketRequestContext from './WebSocketRequestContext.js'
import {
parseHeaders,
parseMultiValueHeaders,
parseMultiValueQueryStringParameters,
parseQueryStringParameters,
} from '../../../utils/index.js'
export default class WebSocketConnectEvent {
constructor(connectionId, request, options) {
const { httpsProtocol, websocketPort } = options
const { rawHeaders, url } = request
this._connectionId = connectionId
this._httpsProtocol = httpsProtocol
this._rawHeaders = rawHeaders
this._url = url
this._websocketPort = websocketPort
}
create() {
// const headers = {
// Host: 'localhost',
// 'Sec-WebSocket-Extensions': 'permessage-deflate; client_max_window_bits',
// 'Sec-WebSocket-Key': createUniqueId(),
// 'Sec-WebSocket-Version': '13',
// 'X-Amzn-Trace-Id': `Root=${createUniqueId()}`,
// 'X-Forwarded-For': '127.0.0.1',
// 'X-Forwarded-Port': String(this._websocketPort),
// 'X-Forwarded-Proto': `http${this._httpsProtocol ? 's' : ''}`,
// }
const headers = parseHeaders(this._rawHeaders)
const multiValueHeaders = parseMultiValueHeaders(this._rawHeaders)
const multiValueQueryStringParameters = parseMultiValueQueryStringParameters(
this._url,
)
const queryStringParameters = parseQueryStringParameters(this._url)
const requestContext = new WebSocketRequestContext(
'CONNECT',
'$connect',
this._connectionId,
).create()
return {
headers,
isBase64Encoded: false,
multiValueHeaders,
// NOTE: multiValueQueryStringParameters and queryStringParameters
// properties are only defined if they have values
...(multiValueQueryStringParameters && {
multiValueQueryStringParameters,
}),
...(queryStringParameters && { queryStringParameters }),
requestContext,
}
}
}