diff --git a/lib/namespace.js b/lib/namespace.js
index <HASH>..<HASH> 100644
--- a/lib/namespace.js
+++ b/lib/namespace.js
@@ -127,8 +127,7 @@
    */
 
   SocketNamespace.prototype.onPacket = function (packet) {
-    var dataAck = packet.ack == 'data'
-      , self = this;
+    var self = this;
 
     function ack () {
       self.packet({
@@ -155,8 +154,11 @@
       case 'json':
         var params = ['message', packet.data];
 
-        if (dataAck)
+        if (packet.ack == 'data') {
           params.push(ack);
+        } else if (packet.ack) {
+          this.packet({ type: 'ack', ackId: packet.id });
+        }
 
         this.$emit.apply(this, params);
         break;
@@ -164,7 +166,7 @@
       case 'event':
         var params = [packet.name].concat(packet.args);
 
-        if (dataAck)
+        if (packet.ack == 'data')
           params.push(ack);
 
         this.$emit.apply(this, params);
Fixed ack handling for regular messages.