흔히 알려진 이슈들:
가능한 풀이들:
"Socket.IO 가 아닌 것" 섹션에서 설명했듯, Socket.IO 클라이언트는 웹소켓 구현이 아니기에 transports: ["websocket"]
이 있어도 웹소켓 서버와 연결을 맺을 수 없다.
const socket = io("ws://echo.websocket.org", {
transports: ["websocket"]
});
Socket.IO 서버가 주어진 URL에 실제로 도달가능한지 확인할 것.
curl "<서버 URL>/socket.io/?EIO=4&transport=polling"
이렇게 생긴걸 반환해야 한다.
0{"sid":"Lbo5JLzTotvW3g2LAAAA","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":20000}
그렇지 않다면 Socket.IO 서버가 가동중인지 확인하고 연결을 방해하는 것이 있는지 확인한다.
노트: v1/v2 서버는 이렇게 생긴걸 반환해야 한다. (which implement the v3 of the protocol, hence the EIO=3)
96:0{"sid":"ptzi_578ycUci8WLB9G1","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}2:40
JS 클라이언트 호환성 테이블:
[1] allowEIO3: true
Java 클라이언트 호환성 테이블
[1] allowEIO3: true
Swift 클라이언트 호환성 테이블
[1] allowEIO3: true (서버) 그리고 .connectParams(["EIO": "3"])
SocketManager(socketURL: URL(string:"http://localhost:8087/")!, config: [.connectParams(["EIO": "3"])])
[2] allowEIO3: true (서버)
[3] .version(.two)
(클라이언트)
SocketManager(socketURL: URL(string:"http://localhost:8087/")!, config: [.version(.two)])
콘솔에서 이런 에러를 본다면
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at ...
아마 이런 뜻이다: