Skip to content

Instantly share code, notes, and snippets.

@ccoenraets
Created October 9, 2012 15:48
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 ccoenraets/3859656 to your computer and use it in GitHub Desktop.
Save ccoenraets/3859656 to your computer and use it in GitHub Desktop.
<html>
<head>
<script>
var socket = io.connect();
socket.on('connect', function () {
socket.send(window.location.href);
});
window.onhashchange = function () {
socket.send(window.location.href);
}
</script>
</head>
<body>
</body>
</html>
var express = require('express'),
path = require('path'),
http = require('http'),
io = require('socket.io'),
wine = require('./routes/wines');
var app = express();
app.configure(function () {
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
app.use(express.bodyParser())
app.use(express.static(path.join(__dirname, 'public')));
});
var server = http.createServer(app);
io = io.listen(server);
io.configure(function () {
io.set('authorization', function (handshakeData, callback) {
if (handshakeData.xdomain) {
callback('Cross-domain connections are not allowed');
} else {
callback(null, true);
}
});
});
server.listen(app.get('port'), function () {
console.log("Express server listening on port " + app.get('port'));
});
app.get('/wines', wine.findAll);
app.get('/wines/:id', wine.findById);
app.post('/wines', wine.addWine);
app.put('/wines/:id', wine.updateWine);
app.delete('/wines/:id', wine.deleteWine);
io.sockets.on('connection', function (socket) {
socket.on('message', function (message) {
console.log("Got message: " + message);
ip = socket.handshake.address.address;
url = message;
io.sockets.emit('pageview', { 'connections': Object.keys(io.connected).length, 'ip': '***.***.***.' + ip.substring(ip.lastIndexOf('.') + 1), 'url': url, 'xdomain': socket.handshake.xdomain, 'timestamp': new Date()});
});
socket.on('disconnect', function () {
console.log("Socket disconnected");
io.sockets.emit('pageview', { 'connections': Object.keys(io.connected).length});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment