Flask 로 소켓 테스트 중, 콘솔에 400 에러가 발생해서 보니 다음과 같이 적혀있었습니다.
(해결하는데 한참 걸렸는데.. 생각보다 너무 간단해서 역시 개발 초보단계에선 에러 로그를 꼼꼼히 확인하는게 중요하다는걸 새삼 느꼈습니다...^^)
"The client is using an unsupported version of the Socket.IO or Engine.IO protocols"
해결방법 1) install 패키지 버전 확인
>> pip3 freeze
Flask == 2.0.1
Flask-Cors == 3.0.10
Flask-SocketIO == 5.1.1
python-engineio == 4.3.1
python-socketio == 5.5.2
pip3, 혹은 pip freeze 명령어로 설치된 패키지 리스트 내역을 확인해 볼 수 있는데
먼저 설치된 각 버전이 맞지 않아 에러가 발생하는 경우가 많았습니다.
2020.08 기준 | 원본 출처 : https://github.com/miguelgrinberg/python-socketio/issues/578
각 패키지의 버전 호환은 위 이미지를 참고하시면 될 것 같은데, 시간이 지남에 따라 업데이트 버전도 많이 나오기 때문에.. 항상 최신의 자료를 찾아보는 것을 추천드립니다.
그.런.데 ...
저는 socket, engineio, socketio 이 3가지의 버전 호환이 맞는데 계속 동일한 에러가 발생했습니다...
해결방법 2) Js 버전확인
참으로 황당한 실수지만... 설치된 패키지 버전에만 집중하다가 문득 가장 첫번째 컬럼에 있는 JS Version이 눈에 들어왔습니다.
그렇습니다... 저는 2.x.x 버전의 js 파일을 사용하고 있었습니다...^^
https://socket.io/docs/v4/client-installation/
위 사이트에 접속해보니 JS Client version은 4.x 이상 출시된 상태였습니다.
작성일자 기준(2022.02.21) 가장 최신버전이라고 하는 4.4.1 을 사용하니 위에서 발생했던 에러를 해결 할 수 있었습니다.
// <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.0/socket.io.js" crossorigin="anonymous"></script>