Skip to content

Commit 2304e7d

Browse files
committed
add discovery of a screencatter near you
1 parent 9002ee1 commit 2304e7d

File tree

4 files changed

+41
-4
lines changed

4 files changed

+41
-4
lines changed

app.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
</p>
2020
</main>
2121
</div>
22-
22+
2323
<div class="viewing-container dn">
2424
<main class="center mw8 phm phl-ns ptl pbxl">
2525
<p class="mono gray lh-copy thin mw7 f4 f3-ns">
@@ -77,7 +77,7 @@ <h2 class="f4 ttu book cl">join</h2>
7777
<div class="code-paste-button tc phs pvs pvm-ns f4 btn w-100 mw-fill">Connect</div>
7878
</div>
7979
</div>
80-
<p>Enter a code to connect to a remote screen</p>
80+
<p>Enter a code to connect to a remote screen. <span class="code-mdns">Found <a href="javascript:void(0)" class="code-mdns-button"></a> near you</span></p>
8181
</div>
8282

8383
</main>

app.js

+34
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var ipc = require('ipc')
22
var clipboard = require('clipboard')
33
var shell = require('shell')
4+
var mdns = require('multicast-dns')()
45

56
var createPeerConnection = require('./peer.js')
67
var ui = require('./ui.js')
@@ -10,6 +11,24 @@ var peer
1011
var peerConnection = createPeerConnection()
1112
window.pc = peerConnection
1213

14+
mdns.on('query', function (query) {
15+
if (!ui.inputs.copy.value) return
16+
query.questions.forEach(function (q) {
17+
if (q.type === 'TXT' && q.name === 'screencat') {
18+
mdns.respond([{type: 'TXT', name: 'screencat', data: ui.inputs.copy.value}])
19+
}
20+
})
21+
})
22+
23+
mdns.on('response', function (res) {
24+
res.answers.forEach(function (a) {
25+
if (a.type === 'TXT' && a.name === 'screencat') {
26+
ui.buttons.mdns.innerText = a.data
27+
ui.show(ui.containers.mdns)
28+
}
29+
})
30+
})
31+
1332
peerConnection.on('connected', function connected (newPeer, remote) {
1433
peer = newPeer
1534

@@ -63,18 +82,33 @@ ui.buttons.share.addEventListener('click', function (e) {
6382
connect.host(peerConnection, ui)
6483
})
6584

85+
ui.buttons.mdns.addEventListener('click', function (e) {
86+
ui.inputs.paste.value = ui.buttons.mdns.innerText.trim()
87+
ui.buttons.paste.click()
88+
})
89+
6690
ui.buttons.join.addEventListener('click', function (e) {
91+
ui.hide(ui.containers.mdns)
6792
ui.show(ui.containers.join)
6893
ui.hide(ui.containers.choose)
6994
ui.show(ui.buttons.back)
95+
96+
var interval = setInterval(query, 1000)
97+
query()
98+
7099
connect.verifyUserRoom(peerConnection, ui, function (err, room, config) {
100+
clearInterval(interval)
71101
if (err) {
72102
ui.inputs.paste.value = 'Error! ' + err.message
73103
return
74104
}
75105
ui.inputs.paste.value = 'Waiting on other side...'
76106
ipc.send('create-window', {config: config, room: room})
77107
})
108+
109+
function query () {
110+
mdns.query([{type: 'TXT', name: 'screencat'}])
111+
}
78112
})
79113

80114
ui.buttons.back.addEventListener('click', function (e) {

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"license": "BSD-3-Clause",
1515
"dependencies": {
1616
"menubar": "^2.0.4",
17+
"multicast-dns": "^3.0.0",
1718
"nets": "^3.1.0",
1819
"simple-peer": "^5.11.5",
1920
"ssejson": "^1.2.0",

ui.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ ui.containers = {
1212
choose: document.querySelector('.choose-container'),
1313
multimedia: document.querySelector('.multimedia-container'),
1414
sharing: document.querySelector('.sharing-container'),
15-
viewing: document.querySelector('.viewing-container')
15+
viewing: document.querySelector('.viewing-container'),
16+
mdns: document.querySelector('.code-mdns')
1617
}
1718

1819
ui.buttons = {
@@ -24,7 +25,8 @@ ui.buttons = {
2425
back: document.querySelector('.back-button'),
2526
destroy: document.querySelector('.sharing-container .destroy-button'),
2627
stopViewing: document.querySelector('.viewing-container .destroy-button'),
27-
show: document.querySelector('.viewing-container .show-button')
28+
show: document.querySelector('.viewing-container .show-button'),
29+
mdns: document.querySelector('.code-mdns-button')
2830
}
2931

3032
ui.inputs = {

0 commit comments

Comments
 (0)