Open mrfelfel opened 3 years ago
Related to socketio/socket.io#5081
engine.io based on the HTTP request, but for Support TCP or other protocols as Transport The concept of receiving queries in Engine.io should be developed
in Anatomy of an Engine.IO session Transport establishes a connection to the Engine.IO with a URL
The connection should be established without a URL as optional
The transports
array is exported here: https://github.com/socketio/engine.io/blob/e5b307c16d8e7594fcec4eb23508f23f78546dc6/lib/engine.io.js#L70 (added in https://github.com/socketio/engine.io/commit/49f9adc2086808a0639b1648bc6198adf6b810c7)
So it should be possible to provide additional transports. There is currently no documentation for this though, as you have noted.
the transports array is a good idea, of course, each transport should be an independent module (like socket.io Redis adapter) and another point for providing additional transports(like TCP), URL is a bottleneck
Update: the client-side now has a way to provide a list of transport implementations:
import { Socket, XHR, WebSocket } from "engine.io-client";
const socket = new Socket({
transports: [XHR, WebSocket]
});
Added in version 6.6.0.
Note: this is not implemented on the server side yet.
Transports must be dynamic to provide transports independently. In my opinion, by making dynamic transports, it is possible to add custom transports such as tcp, mqtt gprc, etc.
But this issue is not implemented in engine.io (or there is no suitable document for it)
Solution I think providing transport independently, such as engineio-websocket-transport, could be better than the current situation and make it possible to implement different transports.