By default, a long-polling connection is established first, then upgraded to “better” transports (like WebSocket). If you like to live dangerously, this part can be skipped:
# [START appengine_websockets_yaml]
runtime: nodejs
env: flex
# Use only a single instance, so that this local-memory-only chat app will work
# consistently with multiple users. To work across multiple instances, an
# extra-instance messaging system or data store would be needed.
manual_scaling:
instances: 1
network:
session_affinity: true
# [END appengine_websockets_yaml]
502.....
再度原因究明
handshake時
General
Request URL: wss://api-dot-pikopikopon1.uc.r.appspot.com/socket.io/?EIO=3&transport=websocket&sid=hEHtzNv2Hp266AmUAAAJ
Request Headers
Provisional headers are shown
Accept-Encoding: gzip, deflate, br
Accept-Language: ja,en-US;q=0.9,en;q=0.8
Cache-Control: no-cache
Connection: Upgrade
Host: api-dot-pikopikopon1.uc.r.appspot.com
Origin: https://pikopikopon1.uc.r.appspot.com
Pragma: no-cache
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Key: EzXoIkzmZjj5xY9hYFN+sw==
Sec-WebSocket-Version: 13
Upgrade: websocket
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Query String Parameters
EIO: 3
transport: websocket
sid: hEHtzNv2Hp266AmUAAAJ
結論、解決方法
GAEでwebsocket扱うにはstandard環境じゃなくてflexible環境である必要がある。 flexible環境からCloudSQLに繋ぐ時には若干設定の追加が必要。 api/app.yamlに以下のように設定変更した。
参考サイト
やっぱ公式Docs読むとなんでも解決するねぇ…🥺
エラー内容
nuxt-socketの接続設定を明示的に設定してみる
より、roomページにてtransportsを明示的にwebsocketに設定
localのresponse headers
productionのresponse headers
GAEの設定がいけなそう🤔
より、こんな感じにやればいいぽいお
502.....
再度原因究明
handshake時
handshake後