forked from RangerMauve/hyperswarm-web
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
33 lines (24 loc) · 1 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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