phaser.js + socket.io emit on "isDown"

i'm playing with phaser and socket.io and wanted to make multiplayer breakout game. I'm building right now paddle which supposed to be synced between 2 clients. So when you move paddle in one client it moves also in another and vice versa.

It works but server is sending too much data. Problem is probably in "isDown" becouse it's emiting data very fast when key is pressed. Thats why server is sending data like crazy. Also socket is emitig data when nothing is pressed. I wanted to work around it by making "send check" but it doesnt work properly becouse data is sent even when nothing is pressed. How can I limit client/server to send data only when it's really needed?

Here is the code:

CLIENT

// connect to the socket server
var socket = io();

var main = {
  preload: function() {
    game.load.image('paddle', 'images/paddle.png');
  },

  create: function() { 
      game.physics.startSystem(Phaser.Physics.ARCADE);

      this.cursor = game.input.keyboard.createCursorKeys();

      this.paddle = game.add.sprite(200, 400, 'paddle');

      game.physics.arcade.enable(this.paddle);

      //game.stage.disableVisibilityChange = true;

      this.paddle.body.immovable = true;
  },

  update: function() {

    var that = this;

    var pos = this.paddle.position.x;

      if (this.cursor.right.isDown){
            that.paddle.body.velocity.x = 350;
            socket.emit('paddle-mov', {send:true}, pos);        
      } 
      else if (this.cursor.left.isDown) {
            that.paddle.body.velocity.x = -350;
            socket.emit('paddle-mov', {send:true}, pos);
      }
      else {
        that.paddle.body.velocity.x = 0;
        socket.emit('paddle-mov', {send:true}, pos);            
      }

      socket.on('paddle-mov-back', function(inx){
            console.log(inx);
            that.paddle.position.x = inx;
        });

  },
};

// Initialize Phaser, and start our 'main' state 
var game = new Phaser.Game(400, 450, Phaser.AUTO, 'gameDiv');
game.state.add('main', main);
game.state.start('main');

SERVER

#!/usr/bin/env node
var debug = require('debug')('test');
var app = require('../app');
var server = app.listen(3000);
var io = require('socket.io').listen(server);

io.on('connection', function(socket){   
    socket.on('paddle-mov', function(send, inx){
        if (send.send == true) {
            socket.broadcast.emit('paddle-mov-back', inx);
            send.send = false;
        };
    });
});

Add a buttonPressed flag and you should be able to reduce the data

// connect to the socket server
var socket = io();
var buttonPressed = false;

  var main = {
     preload: function() {
     game.load.image('paddle', 'images/paddle.png');
  },

  create: function() { 
      game.physics.startSystem(Phaser.Physics.ARCADE);

      this.cursor = game.input.keyboard.createCursorKeys();

      this.paddle = game.add.sprite(200, 400, 'paddle');

      game.physics.arcade.enable(this.paddle);

      //game.stage.disableVisibilityChange = true;

      this.paddle.body.immovable = true;
   },

  update: function() {

    var that = this;

    var pos = this.paddle.position.x;

      if ((this.cursor.right.isDown || this.cursor.left.isDown) && buttonPressed == false){
            buttonPressed = true;
            that.paddle.body.velocity.x = 350;
            socket.emit('paddle-mov', {send:true}, pos);        
      } 
      else {
        buttonPressed = false;
        that.paddle.body.velocity.x = 0;
        socket.emit('paddle-mov', {send:true}, pos);            
      }

      socket.on('paddle-mov-back', function(inx){
            console.log(inx);
            that.paddle.position.x = inx;
        });

  },
};