Skip to content

Commit 3ee0b82

Browse files
save file
1 parent 3f168c1 commit 3ee0b82

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
2+
3+
4+
5+
var fs = require('fs');
6+
var https = require('https');
7+
var crypto = require('crypto');
8+
9+
var magic = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
10+
var hdrs = 'HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ';
11+
12+
var key = fs.readFileSync('key.pem');
13+
var cert = fs.readFileSync('cert.pem');
14+
15+
var server = https.createServer({key,cert}).listen(8443);
16+
console.log(`listening 127.0.0.1:8443`);
17+
server.on('request',(req,res)=>{
18+
19+
if(req.url!='/'){
20+
res.writeHead(404).end('not found');
21+
return;
22+
}
23+
res.writeHead(200).end('helloworld');
24+
25+
});
26+
27+
server.on('upgrade', (req,socket)=>{
28+
29+
var key = req.headers['sec-websocket-key'];
30+
var accept = crypto.createHash('sha1').update(key+magic).digest('base64');
31+
socket.write(hdrs+accept+'\r\n\r\n');
32+
33+
socket.on('data',buf=>{
34+
35+
var len = buf[1]&0x7f;
36+
var mask = buf.slice(2,6);
37+
var data = buf.slice(6,6+len).map((b,i)=>b^mask[i%4]);
38+
var msg = Buffer.from(data).toString();
39+
console.log('Received:', msg);
40+
var reply = Buffer.from(msg);
41+
var hdr = Buffer.from([0x81,reply.length]);
42+
var frame = Buffer.concat([hdr,reply]);
43+
socket.write(frame);
44+
45+
});
46+
});
47+
48+
49+

0 commit comments

Comments
 (0)