hyperswarm-web
Version:
Implementation of the hyperswarm API for use in web browsers
34 lines (24 loc) • 1.03 kB
JavaScript
const HyperswarmProxyWSServer = require('hyperswarm-proxy-ws/server')
const { SignalServer } = require('@geut/discovery-swarm-webrtc/server')
const websocket = require('websocket-stream')
const url = require('url')
class HyperswarmServer extends HyperswarmProxyWSServer {
listenOnServer (server) {
this.server = server
const proxyWss = this.websocketServer = websocket.createServer({ noServer: true }, (socket) => {
this.handleStream(socket)
})
const signalServer = new SignalServer({ noServer: true })
const signalWss = signalServer.ws
server.on('upgrade', function upgrade(request, socket, head) {
const pathname = url.parse(request.url).pathname;
if (pathname === '/signal') {
signalWss.handleUpgrade(request, socket, head, (ws) => signalWss.emit('connection', ws, request));
return
}
// proxy
proxyWss.handleUpgrade(request, socket, head, (ws) => proxyWss.emit('connection', ws, request));
});
}
}
module.exports = HyperswarmServer