Skip to content

Commit 812b900

Browse files
committed
added sender and receiver
1 parent 19a92bf commit 812b900

File tree

4 files changed

+102
-0
lines changed

4 files changed

+102
-0
lines changed

receiver.html

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<html>
2+
<script src="https://cdnjs.cloudflare.com/ajax/libs/peerjs/0.3.16/peer.min.js"></script>
3+
<script src="receiver.js"></script>
4+
5+
<div></div>
6+
7+
</html>

receiver.js

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
document.addEventListener("DOMContentLoaded", (event) => {
2+
3+
const peer = new Peer("receiver", {
4+
host: "localhost",
5+
port: 9000,
6+
path: "/",
7+
});
8+
9+
peer.on('connection', conn => {
10+
conn.on('data', data => {
11+
if (data.filetype.includes('image')) {
12+
13+
const bytes = new Uint8Array(data.file);
14+
const img = document.createElement('img');
15+
img.src = 'data:image/png;base64,' + encode(bytes);
16+
document.querySelector('div').prepend(img);
17+
}
18+
});
19+
});
20+
});
21+
22+
const encode = input => {
23+
24+
const keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
25+
let output = '';
26+
let chr1, chr2, chr3, enc1, enc2, enc3, enc4;
27+
let i = 0;
28+
29+
while (i < input.length) {
30+
chr1 = input[i++]
31+
chr2 = i < input.length ? input[i++] : Number.NaN // Not sure if the index
32+
chr3 = i < input.length ? input[i++] : Number.NaN // checks are needed here
33+
34+
enc1 = chr1 >> 2;
35+
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
36+
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
37+
enc4 = chr3 & 63;
38+
39+
if (isNaN(chr2)) {
40+
enc3 = enc4 = 64;
41+
} else if (isNaN(chr3)) {
42+
enc4 = 64;
43+
}
44+
45+
output +=
46+
keyStr.charAt(enc1) +
47+
keyStr.charAt(enc2) +
48+
keyStr.charAt(enc3) +
49+
keyStr.charAt(enc4);
50+
51+
}
52+
53+
return output;
54+
}
55+

sender.html

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<html>
2+
3+
<head>
4+
<script src="https://cdnjs.cloudflare.com/ajax/libs/peerjs/0.3.16/peer.min.js"></script>
5+
<script src="sender.js"></script>
6+
</head>
7+
8+
<body>
9+
<form>
10+
<input type="file" />
11+
</form>
12+
</body>
13+
14+
</html>

sender.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
const { PeerServer } = require("peer");
2+
3+
document.addEventListener('DOMContentLoaded', (event) => {
4+
5+
const peer = new Peer("sender",
6+
{
7+
host: 'localhost',
8+
port: 9000,
9+
path: '/'
10+
});
11+
12+
const conn = peer.connect('receiver');
13+
14+
document.querySelector('input').onchange = function(event) {
15+
const file = event.target.files[0];
16+
const blob = new Blob(event.target.files, { type: file.type });
17+
18+
19+
conn.send({
20+
file: blob,
21+
filename: file.name,
22+
filetype: file.type
23+
});
24+
25+
}
26+
});

0 commit comments

Comments
 (0)