Tôi là thương hiệu mới với những thứ như Meteor.JS và đã tự hỏi về lỗi này. Tôi bắt đầu dự án thử nghiệm (với nút bấm mét) và nó hoạt động, nhưng sau đó tôi đi vào giao diện điều khiển và xem WebSocket connection to 'ws://shibe.ninja/sockjs/243/5gtde_n9/websocket' failed: Error during WebSocket handshake: Unexpected response code: 400
Tôi không biết làm thế nào để sửa chữa nó. Cảm ơnKết nối Meteor WebSocket với 'ws: //.../websocket' không thành công: Lỗi trong quá trình bắt tay WebSocket: Mã phản hồi không mong muốn: 400
Trả lời
tôi tình cờ gặp vấn đề này bản thân mình, nhưng Tôi đã có tiêu đề proxy của tôi đặt đúng và nó vẫn không làm việc. Nhưng dường như Cloudflare đang gây ra sự cố. Đây là một bài viết tuyệt vời về đề tài này: https://meteorhacks.com/cloudflare-meets-meteor
Theo như tôi đã tìm thấy, có ba giải pháp:
Lựa chọn 1: Sử dụng CloudFlare doanh nghiệp, hỗ trợ ổ cắm.
Tùy chọn 2: Tắt Meteor WebSockets, điều này sẽ ảnh hưởng đến hiệu suất của bạn khi nó quay trở lại để sử dụng sock.js làm thay thế. Để làm điều này, chỉ cần thiết lập môi trường sao băng của bạn như thế này:
export DISABLE_WEBSOCKETS=1
Lựa chọn 3: Trong CloudFlare, tạo một DDP subdomain cho WebSocket (ddp.yourdomain.com), sau đó vô hiệu hóa CloudFlare trên mới tên miền phụ. Sau đó thiết lập môi trường sao băng của bạn như thế này:
export DDP_DEFAULT_CONNECTION_URL=http://ddp.example.com
Sau này cấu hình nginx của tôi cần một số điều chỉnh, vì điều này đã trở thành thiết lập gốc (CORS). Đây là cấu hình nginx mới của tôi:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80 proxy_protocol;
listen [::]:80 proxy_protocol;
server_name mydomain.com ddp.mydomain.com;
## This allows the CORS setup to work
add_header Access-Control-Allow-Origin 'http://example.com';
## This hides the CORS setup from the Meteor server
## Without this the header is added twice, not sure why?
proxy_hide_header Access-Control-Allow-Origin;
## Idealy the two options above should be disabeled,
## Then use this one instead, but that caused issues in my setup.
# proxy_set_header Access-Control-Allow-Origin 'http://example.com';
location/{
proxy_pass http://localhost:3000;
proxy_set_header Host $host; # pass the host header
proxy_set_header Upgrade $http_upgrade; # allow websockets
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Real-IP $remote_addr; # Preserve client IP
proxy_set_header X-Forwarded-For $remote_addr;
proxy_http_version 1.1;
# Meteor browser cache settings (the root path should not be cached!)
if ($uri != '/') {
expires 30d;
}
}
}
Cuối cùng, hãy nhớ khởi động lại nginx.
Có thể hơi trễ nhưng trong trường hợp bạn vẫn bị mắc kẹt trong trường hợp này. Tôi gặp vấn đề tương tự khi triển khai ứng dụng và sử dụng nginx làm proxy.
location/{
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
Kiểm tra cũng các tài liệu nginx ở đây: http://nginx.com/blog/websocket-nginx/
- 1. Lỗi kết nối WebSocket. Lỗi trong quá trình bắt tay Websocket. Mã phản hồi 403?
- 2. Bắt tay WebSocket: Mã phản hồi không mong muốn: 404
- 3. Rails 5 cáp hành động SSL trong sản xuất - Kết nối WebSocket không thành công: Lỗi trong quá trình bắt tay WebSocket: Phản hồi không mong muốn 301
- 4. Kết nối WebSocket với 'wss: //' không thành công: Mã phản hồi không mong muốn: 500
- 5. ActionCable on AWS: Lỗi trong quá trình bắt tay WebSocket: Mã phản hồi không mong muốn: 404
- 6. Lỗi trong WebSocket handshake: mã phản hồi mong đợi: 403
- 7. Lỗi trong WebSocket handshake: mã phản hồi mong đợi: 500
- 8. RoR 5.0.0 ActionCable wss WebSocket handshake: Mã phản hồi không mong muốn: 301
- 9. Làm thế nào để bắt kết nối WebSocket với 'ws: // xxx: nn' không thành công: Kết nối đã đóng trước khi nhận được lỗi trả lời bắt tay?
- 10. Javascript không gặp lỗi trong quá trình khởi tạo WebSocket
- 11. Rails5 + ActionCable: Kết nối WebSocket với 'ws: // {hostname}/cable' không thành công: WebSocket bị đóng trước khi kết nối được thiết lập
- 12. Django restframework, kênh Django, Ionic 2 - lỗi bắt tay websocket
- 13. Không thể kết nối với websocket
- 14. Tôi có thể gặp lỗi "không thể thiết lập kết nối" cho kết nối websocket không thành công không?
- 15. Không thể kết nối websocket hoạt động trong Chrome 19
- 16. Nhiều kết nối websocket
- 17. Kết nối Websocket với người đưa thư
- 18. Chia sẻ kết nối WebSocket giữa Socket.IO và WS
- 19. Đóng kết nối websocket với Java
- 20. WebSocket yêu cầu-phản hồi subprotocol
- 21. WebSocket Thời gian chờ kết nối
- 22. kết nối WebSocket tối đa trong các trình duyệt
- 23. php ratchet websocket SSL kết nối?
- 24. Lỗi kết nối trong websocket trên amazon ELB
- 25. Websocket trên Android 4.4 với Phonegap
- 26. Ruby websocket client cho websocket-rails gem
- 27. WebSocket kết nối không được đóng bằng SocketRocket
- 28. Bắt tay WebSocket trong Node.JS, Socket.IO và Clusters không hoạt động
- 29. Tạm dừng thực thi cho đến khi Websocket kết nối
- 30. JSS HTML5 WebSocket: Kết nối không có cuộc gọi HTTP
Tôi nhấn nút này khi ở trong khách sạn và phải kết nối qua proxy của họ, giải pháp của tôi là [sử dụng điện thoại di động của tôi làm điểm truy cập WiFi] (https://stackoverflow.com/a/45334998/327074) – icc97