-
Notifications
You must be signed in to change notification settings - Fork 10.1k
Description
I have set my transports to use WebSocket first and then fallback to polling e.g. transports: ["websocket", "polling"].
To test if the fallback transport really works, I used TamperMonkey browser extension to disable Websocket by setting WebSocket = void 0.
Instead of switching to polling, I keep getting connect_error with the message timeout from websocket transport.
Tried to investigate and it looks like transport switching only works if createTransport method throws here:
But the method always returns a transport wrapper class, even when WebSocket is not defined.
To Reproduce
Engine.IO server version: 6.5.2
Server
const engine = require("engine.io");
const server = engine.listen(3000, {
transports: ["polling", "websocket"]
});
server.on("connection", (socket) => {
console.log("connection");
socket.on("message", (data) => {
console.log("data", data);
});
socket.on("close", () => {
console.log("close");
});
});Engine.IO client version: 6.5.2
Client
const socket = require("engine.io-client")("ws://localhost:3000", {
transports: ["websocket", "polling"]
});
socket.on("open", () => {
console.log("open");
socket.on("message", (data) => {
console.log("data", data);
});
socket.on("close", () => {
console.log("close");
});
});Expected behavior
Should be able to fallback to polling transport when WebSocket transport is disabled on the browser.
Platform:
- Device: Chrome 119.0.6045
- OS: Windows
Additional context
Add any other context about the problem here.