Skip to content

Instantly share code, notes, and snippets.

@dirkk0
Created July 10, 2013 15:41
Show Gist options
  • Select an option

  • Save dirkk0/5967385 to your computer and use it in GitHub Desktop.

Select an option

Save dirkk0/5967385 to your computer and use it in GitHub Desktop.
<html>
<head>
<title>Cloud9, NodeJS & Heroku: websockets for all</title>
<script src="/socket.io/socket.io.js"></script>
<script>
onerror = function(msg) {
log(msg);
}
function log(msg) {
document.getElementById('log').appendChild(document.createTextNode(new Date() + ' ' + msg + '\n'));
}
function status(msg) {
log(msg);
document.getElementById('status').textContent = msg;
}
function clearLog() {
var e = document.getElementById('log');
while (e.hasChildNodes()) {
e.removeChild(e.firstChild);
}
e.appendChild(document.createTextNode('Log: \n'));
}
</script>
<script>
var socket = null;
function connect() {
log('Connecting to local server...');
if (socket == null) {
socket = io.connect(null, {
'auto connect': false
});
socket.on('connect', function() {
status('Connected');
});
socket.on('message', function(data) {
log(data);
});
}
socket.socket.connect();
}
function send() {
if (socket && socket.socket.connected) {
socket.send(document.getElementById('text').value);
log('>' + document.getElementById('text').value);
}
else {
log('Not connected.');
}
}
function send100() {
if (socket && socket.socket.connected) {
for (var i = 0; i < 100; i += 1) {
socket.send('test' + i);
log('> test' + i);
}
}
else {
log('Not connected.');
}
}
function update() {
if (socket && socket.socket && socket.socket.transport) {
document.getElementById('sessionId').textContent = socket.socket.transport.sessid;
document.getElementById('transport').textContent = socket.socket.transport.name;
}
else {
document.getElementById('sessionId').textContent = '-';
document.getElementById('transport').textContent = '-';
}
}
setInterval(update, 10);
</script>
</head>
<body onload="connect()">
<p>
<label style='width:200px;float:left'>Status:
<span id="status">Idle</span>
</label>
</p>
<p>SessionId:
<span id="sessionId">-</span>
</p>
<p>Transport:
<span id="transport">-</span>
</p>
<p>
<label>Message:
<input id="text" type="text" size="80" value="" />
</label>
<input type=button value="Echo" onclick="send()">
</p>
<p>
<input type=button value="Spam 100 packets" onclick="send100()" />
<input type=button value="Clear log" onclick="clearLog()" />
</p>
<pre id="log">Log:</pre>
<script src="JS/ext.js"></script>
</body>
</html>
var server = require("http").createServer(handler);
var io = require("socket.io").listen(server);
var fs = require("fs");
var path = require("path");
var url = require("url");
server.listen(process.env.PORT || 8001);
var mimeTypes = { '.html':'text/html', '.php':'text/php', '.js':'text/javascript','.css':'text/css',
'.png':'image/png', '.gif':'image/gif','.jpeg':'image/jpeg' };
function handler(request, response) {
var lookup = url.parse(decodeURI(request.url)).pathname;
lookup = (lookup === '/') ? '/index.html' : lookup;
lookup = lookup.substr(1);
fs.exists(lookup, function(exists){
if (exists) {
fs.readFile(lookup, function(error, data){
if (error) {
response.writeHead(500);
response.end('Sorry, server Error');
return;
}
var headers = {'Content-Type': mimeTypes[path.extname(lookup)]};
response.writeHead(200, headers);
response.end(data);
});
return;
}
response.writeHead(404);
response.end('page nof found...');
});
} // end function handler
io.sockets.on('connection', function(socket){
socket.on('message', function(data){
console.log(data);
socket.send("[ECHO] " + data);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment