aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMarvin Borner2019-02-13 22:30:40 +0100
committerMarvin Borner2019-02-13 22:30:40 +0100
commit0ef393b75e900e08f953cbc1547e3f2aaedfd643 (patch)
tree328ff1b38f43564acf83b715bf690dbe4b8827ea
parentb4b2e3fa0967578d793d7866c616b9f84ac89519 (diff)
Tried implementing acceptable connection requests
-rw-r--r--public/scripts/chat.js99
1 files changed, 68 insertions, 31 deletions
diff --git a/public/scripts/chat.js b/public/scripts/chat.js
index b34a1ba..2c191b9 100644
--- a/public/scripts/chat.js
+++ b/public/scripts/chat.js
@@ -129,24 +129,50 @@ function chat() {
}
});
- peer.on('connection', async (conn) => {
- connectedPeer = conn;
- console.log('[LOG] Connected to', connectedPeer.peer);
- swal(
- 'New connection!',
- `You have successfully connected to the user ${connectedPeer.peer}!`,
- 'success',
- );
- encryption.getMessages(
- connectedPeer.peer,
- await encryption.getPeerPublicKey(connectedPeer.peer),
- )
- .then(messages => messages.forEach(async data => await receivedMessage(`${data.message} - ${data.time}`, true)));
- connectedPeer.on('open', async () => transferKey(await encryption.getPublicKey()));
- connectedPeer.on('data', async (message) => {
- console.log('[LOG] Received new message!');
- await receivedMessage(message);
- });
+ peer.on('connection', (conn) => {
+ swal({
+ title: 'Connection request',
+ text: `The user "${conn.peer}" wants to connect to you.\nThis gets cancelled in 3 seconds.`,
+ timer: 3000,
+ icon: 'info',
+ buttons: true,
+ })
+ .then(async (accepted) => {
+ if (accepted) {
+ connectedPeer = conn;
+ connectedPeer.send({
+ type: 'state',
+ data: 'accepted',
+ });
+ connectedPeer.on('data', async (state) => {
+ if (state.data === 'received') {
+ console.log('[LOG] Connected to', connectedPeer.peer);
+ swal(
+ 'New connection!',
+ `You have successfully connected to the user "${connectedPeer.peer}"!`,
+ 'success',
+ );
+ encryption.getMessages(
+ connectedPeer.peer,
+ await encryption.getPeerPublicKey(connectedPeer.peer),
+ )
+ .then(messages => messages.forEach(async data => await receivedMessage(`${data.message} - ${data.time}`, true)));
+ connectedPeer.on('open', async () => transferKey(await encryption.getPublicKey()));
+ connectedPeer.on('data', async (message) => {
+ console.log('[LOG] Received new message!');
+ await receivedMessage(message);
+ });
+ }
+ });
+ } else {
+ console.log(`[LOG] Declined connection request of ${conn.peer}`);
+ conn.send({
+ type: 'state',
+ data: 'declined',
+ });
+ conn.close();
+ }
+ });
});
/**
@@ -159,19 +185,30 @@ function chat() {
console.log('[LOG] Connecting to', id);
console.log('[LOG] Your connection ID is', connectionId);
connectedPeer = peer.connect(id, { label: connectionId });
- console.log('[LOG] Connected to', connectedPeer.peer);
- encryption.getMessages(
- connectedPeer.peer,
- await encryption.getPeerPublicKey(connectedPeer.peer),
- )
- .then(messages => messages.forEach(async data => await receivedMessage(`${data.message} - ${data.time}`, true)));
- connectedPeer.on('open', async () => {
- swal(`Successfully connected to "${connectedPeer.peer}"!`, '', 'success');
- transferKey(await encryption.getPublicKey());
- });
- connectedPeer.on('data', async (message) => {
- console.log('[LOG] Received new message!');
- await receivedMessage(message);
+ connectedPeer.on('data', async (state) => {
+ if (state.type === 'state' && state.data === 'accepted') {
+ connectedPeer.send({
+ type: 'state',
+ data: 'received',
+ });
+ console.log('[LOG] Connected to', connectedPeer.peer);
+ swal(`Successfully connected to "${connectedPeer.peer}"!`, '', 'success');
+ transferKey(await encryption.getPublicKey());
+ encryption.getMessages(
+ connectedPeer.peer,
+ await encryption.getPeerPublicKey(connectedPeer.peer),
+ )
+ .then(messages => messages.forEach(async data => await receivedMessage(`${data.message} - ${data.time}`, true)));
+ connectedPeer.on('data', async (message) => {
+ console.log('[LOG] Received new message!');
+ await receivedMessage(message);
+ });
+ connectedPeer.on('close', () => {
+ swal('Disconnected!', `The connection to "${connectedPeer.peer}" has been closed!`, 'error');
+ });
+ } else if (state.type === 'state') {
+ swal('Declined!', `The user "${connectedPeer.peer}" has declined your connection request.`, 'error');
+ }
});
}