Блин, у меня какая-от непонятная херота с WebSocket соединениями на моём GoToSocial.
Альтернативные мастодон-морды не могут подключиться к вебсокету. А ручной коннект через создание вебсокета в консоли браузера - срабатывает.
При этом при WS-коннекте из того же Masto-FE Standalone (GTS flavor) я вижу, что в заголовках запроса улетает sec-websocket-protocol
равный моему токену, который и так передаётся в урле при подключении:
/api/v1/streaming?access_token=<my_token_here>
И это очень странно. Потому что sec-websocket-protocol
так-то вроде вообще не для этого.
Соответственно, если я попытаюсь воспроизвести руками и сделать примено так:
new WebSocket(
"wss://gts.skobk.in/api/v1/streaming?access_token=<your_token>",
"<your_token>"
);
То получу аналогичный результат с проблемой соединения.
Но вот какого хера это происходит - неясно.
Тем временем не факт, что проблема только в этом. В Phanpy при этом заголовка такого в запросе нет, но результат - такой же.
Со стороны GTS же я вижу такое:
gotosocial | timestamp="13/04/2025 03:01:29.171" func=streaming.(*Module).handleWSConn level=INFO streamID=<redacted> username=skobkin requestID=<redacted> msg="opened websocket connection"
...
gotosocial | timestamp="13/04/2025 03:01:34.214" func=streaming.(*Module).readFromWSConn level=ERROR streamID=<redacted> username=skobkin requestID=<redacted> msg="error during websocket read: websocket: close 1006 (abnormal closure): unexpected EOF"
gotosocial | timestamp="13/04/2025 03:01:34.214" func=streaming.(*Module).handleWSConn level=INFO streamID=<redacted> username=skobkin requestID=<redacted> msg="closed websocket connection"
Хотелось бы подумать, что "да это просто Nginx не настроен!", но:
- Руками-то сокет создаётся и переходит в статус
101
- Другие сервисы с подобным конфигом работают нормально на этом же сервере