当使用AWS WebSocket和CloudFront时,如果出现“WebSocket握手:意外的响应代码:426”错误,可能是由于以下原因之一:
Sec-WebSocket-Version
的值不是13
,则可能会出现426错误。确保使用的WebSocket客户端库或代码支持WebSocket协议的版本13。示例代码:
const WebSocket = require('ws');
const ws = new WebSocket('wss://your-websocket-url', {
headers: {
'Sec-WebSocket-Version': 13
}
});
ws.on('open', () => {
console.log('WebSocket connection established');
});
ws.on('message', (data) => {
console.log('Received message:', data);
});
ws.on('close', () => {
console.log('WebSocket connection closed');
});
示例代码:
resource "aws_cloudfront_distribution" "example" {
// 其他配置...
enabled = true
default_cache_behavior {
// 其他配置...
viewer_protocol_policy = "redirect-to-https"
allowed_methods = ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"]
cached_methods = ["GET", "HEAD", "OPTIONS"]
forwarded_values {
// 其他配置...
query_string = false
}
lambda_function_association {
// 其他配置...
event_type = "viewer-request"
}
// 启用WebSocket支持
websocket = true
}
// 其他配置...
}
通过检查以上两个方面,您应该能够解决“WebSocket握手:意外的响应代码:426”错误。