Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Originally from
- http://mclear.co.uk/2011/01/30/real-time-mouse-activity-w-nodejs-sockets/
- adapted to socket.io 0.7
- -----------server.js---------
- // Simple Node & Socket server
- var http = require('http')
- , url = require('url')
- , fs = require('fs')
- , io = require('socket.io')
- , sys = require('sys')
- , server;
- server = http.createServer(function(req, res){
- var path = url.parse(req.url).pathname;
- switch (path){
- case '/':
- res.writeHead(200, {'Content-Type': 'text/html'});
- res.write('<h1>Welcome. Try the <a href="/chat.html">chat</a> example.</h1>');
- res.end();
- break;
- case '/json.js':
- case '/test.html':
- fs.readFile(__dirname + path, function(err, data){
- if (err) return send404(res);
- res.writeHead(200, {'Content-Type': path == 'json.js' ? 'text/javascript' : 'text/html'})
- res.write(data, 'utf8');
- res.end();
- });
- break;
- default: send404(res);
- }
- }),
- send404 = function(res){
- res.writeHead(404);
- res.write('404');
- res.end();
- };
- server.listen(8080);
- // socket.io, I choose you
- var io = io.listen(server)
- , buffer = [];
- io.sockets.on('connection', function(client){
- client.send({ buffer: buffer });
- client.broadcast.json.send({ announcement: client.id + ' connected' });
- client.on('message', function(message){
- var msg = { message: [client.id, message] };
- buffer.push(msg);
- if (buffer.length > 15) buffer.shift();
- client.broadcast.json.send(msg);
- console.log(msg);
- });
- client.on('disconnect', function(){
- console.log('disconnect');
- client.broadcast.json.send({ announcement: client.id + ' disconnected' });
- });
- });
- --------- test.html-------
- <!doctype html>
- <html>
- <head>
- <title>Multi Mouse - How many mice can I mouse eater eat?</title>
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> <!-- jquery -->
- <script src="/json.js"></script> <!-- for ie -->
- <script src="socket.io/socket.io.js"></script> <!-- sockets -->
- </head>
- <body>
- <h1> You can see my mouse!! ZOMG - <a href="http://www.youtube.com/watch?v=aFLcbBvTGns">Video explaining why I'm doign this</a></h1>
- <script>
- // some random color
- function randc(){
- colors = new Array('#FF0000','#00FF00','#0000FF','#00FFFF','#FF00FF','#C0C0C0');
- var color = colors[Math.floor(Math.random()*colors.length)]
- return color;
- }
- // When a new message arrives..
- function message(obj){
- var data = obj.message[1].split(':');
- var x = data[0];
- var y = data[1];
- var userid = obj.message[0];
- if($('#mouse_'+userid).length == 0 && userid != 'you') {
- var randcolor = randc();
- $('body').append('<div class="dot" style="background-color:'+randcolor+'" id="mouse_'+userid+'"/>'
- );
- }
- // stops a dot being drawn for local user
- if (userid != 'you'){
- $('#mouse_'+userid).css({
- 'left' : x + 'px',
- 'top' : y + 'px'
- })
- }
- /*
- var el = document.createElement('p');
- if ('announcement' in obj) el.innerHTML = '<em>' + esc(obj.announcement) + '</em>';
- else if ('message' in obj) el.innerHTML = '<b>' + esc(obj.message[0]) + ':</b> ' + esc(obj.message[1]);
- document.getElementById('chat').appendChild(el);
- document.getElementById('chat').scrollTop = 1000000;
- */
- }
- // A function to define how we send data
- function send(){
- var val = document.getElementById('text').value;
- socket.send(val);
- message({ message: ['you', val] });
- document.getElementById('text').value = '';
- }
- // When a mouse is moved
- window.onmousemove = function(event){
- message({ message: ['you', event.clientX+':'+event.clientY] });
- socket.send(event.clientX+':'+event.clientY);
- };
- // replace <&> w/ <&>
- function esc(msg){
- return msg.replace(/</g, '<').replace(/>/g, '>');
- };
- // establish the socket connection
- // var socket = new io.Socket(null, {port: 8080, rememberTransport: false});
- // socket.connect();
- var socket = io.connect('http://vs165120.vserver.de:8080');
- socket.on('message', function(obj){
- if ('buffer' in obj){
- document.getElementById('form').style.display='none';
- document.getElementById('chat').innerHTML = '';
- for (var i in obj.buffer) message(obj.buffer[i]);
- } else message(obj);
- });
- </script>
- <div id="chat"><p>Connecting...</p></div>
- <form id="form" onsubmit="send(); return false">
- <input type="text" autocomplete="off" id="text"><input type="submit" value="Send">
- </form>
- <style>
- .dot { height: 10px; width: 10px; background-color:#000000;position:absolute;left:0;top:0;}
- </style>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement