-
Notifications
You must be signed in to change notification settings - Fork 10.1k
Closed
Labels
questionFurther information is requestedFurther information is requested
Description
Any reason why socket.io does not connect the websocket transport through the following websocket proxy?
import http from 'http'; // node default
import * as ws from 'ws'; // ws from npm
import wsDefault from 'ws'; // ws from npm
import * as smartpromise from '@pushrocks/smartpromise' // @pushrocks/smartpromise from npm
const wss = new ws.WebSocketServer();
wss.on('connection', (ws: wsDefault, reqArg: http.IncomingMessage) => {
console.log(`wss: got connection for wsc for https://${reqArg.headers.host}${reqArg.url}`);
let wscConnectedDeferred: smartpromise.Deferred<wsDefault>;
ws.on('message', async (message) => {
if (!wscConnectedDeferred) {
wscConnectedDeferred = smartpromise.defer();
let wsc: wsDefault;
try {
wsc = new wsDefault(`ws://[someip]:[someport]${reqArg.url}`, {
headers: reqArg.headers
});
} catch (err) {
console.log(err);
ws.terminate();
return;
}
wsc.on('open', () => {
console.log('wsc opened.');
wscConnectedDeferred.resolve(wsc);
});
wsc.on('message', (message) => {
ws.send(message);
});
}
const wsc = await wscConnectedDeferred.promise;
wsc.send(message);
// handle closing
const cleanUp = () => {
ws.terminate();
wsc.terminate();
};
ws.on('close', (message) => {
cleanUp();
});
wsc.on('close', (message) => {
cleanUp();
});
});
});Metadata
Metadata
Assignees
Labels
questionFurther information is requestedFurther information is requested