Last active
December 15, 2015 22:19
-
-
Save gildean/5331844 to your computer and use it in GitHub Desktop.
PeerJS/connect chat demo.
Note: index.html goes into a dir named 'public' under the project dir.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var connect = require('connect'); | |
var app = connect(); | |
var PeerServer = require('peer').PeerServer; | |
var peerport = 9999; | |
var httpport = 8888; | |
var peerserver = new PeerServer({ port: peerport }); | |
var server = require('http').createServer(app).listen(httpport); | |
app.use(connect.static(__dirname + '/public')); | |
app.use(function (req, res) { | |
res.writeHead(418, {'Content-Type': 'text/plain'}); | |
res.end('out of coffee'); | |
}); | |
server.on('listening', function () { | |
console.log('Http-server ready on port ' + httpport + '\r\npeerjs-server ready on port ' + peerport); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>peerjs demo</title> | |
<style> | |
body { font: 120% 'Open Sans', sans-serif; padding: 1em 2em 0; } | |
.nick { color: rgba(0,0,0,0.4); padding: 0 0.5em } | |
#connbox { padding: 0.2em;margin: 0;position: fixed;top: 0;left: 0;width: 100%;background: #0e0e0e;color: #fcfcfc; } | |
#peerid { padding: 0 1em 0 0.2em } | |
#chatbox { position: fixed; bottom: 0; left: 0; width: 100%; } | |
#chatbox input { width: 50%; } | |
input, button { font-size: 110%; } | |
</style> | |
<script src="http://cdn.peerjs.com/0/peer.min.js"></script> | |
</head> | |
<body> | |
<div id="main"> | |
<p id="connbox">your id: <span id="peerid"></span> connect to: <input type="text" id="remotepeer" /><button id="connect" href="#">connect</button></p> | |
<p id="chatbox"><input type="text" id="input" /><button id="send" href="#">chat</button></p> | |
<p id="messagebox"></p> | |
</div> | |
<script> | |
var peerid = document.getElementById('peerid'); | |
var messagebox = document.getElementById('messagebox'); | |
var connbutt = document.getElementById('connect'); | |
var sendbutt = document.getElementById('send'); | |
var input = document.getElementById('input'); | |
var remotepeer = document.getElementById('remotepeer'); | |
var peer = new Peer({host: 'localhost', port: 9999}); | |
var conn; | |
peer.on('open', function (id) { | |
peerid.innerHTML = id; | |
}); | |
peer.on('connection', connect); | |
function addText(str) { | |
return document.createTextNode(str); | |
} | |
function connect(rconn) { | |
conn = rconn; | |
messagebox.innerHTML = '<h3> connected to ' + conn.peer + '</h3>'; | |
conn.on('data', function (data) { | |
var p = document.createElement('p'); | |
messagebox.appendChild(p); | |
var s = document.createElement('span'); | |
p.appendChild(s); | |
s.className = "nick"; | |
s.appendChild(addText(conn.peer)); | |
p.appendChild(addText(data)); | |
}); | |
conn.on('close', function (err) { | |
messagebox.innerHTML += '<h3>' + conn.peer + ' has left the chat.</h3>' | |
}); | |
} | |
connbutt.onclick = function (e) { | |
e.preventDefault(); | |
var rid = remotepeer.value; | |
if (rid !== '') { | |
var lconn = peer.connect(rid); | |
lconn.on('open', function () { | |
connect(lconn); | |
}); | |
lconn.on('error', function (err) { | |
alert(err); | |
}); | |
} else { | |
alert('No remote peer id set!'); | |
} | |
}; | |
sendbutt.onclick = function (e) { | |
e.preventDefault(); | |
if (conn !== undefined) { | |
var msg = input.value; | |
conn.send(msg); | |
var p = document.createElement('p'); | |
messagebox.appendChild(p); | |
var s = document.createElement('span'); | |
p.appendChild(s); | |
s.className = 'nick'; | |
s.appendChild(addText('You')); | |
p.appendChild(addText(msg)); | |
input.value = ''; | |
} else { | |
alert('Connect first!'); | |
} | |
}; | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment