Skip to content

Instantly share code, notes, and snippets.

@gildean
Last active December 15, 2015 22:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gildean/5331844 to your computer and use it in GitHub Desktop.
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.
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);
});
<!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