diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,9 @@
+## 1.0.1
+
+* Purposefully double-encode websocket traffic. Unfortunately this is necessary
+  due to https://github.com/Automattic/engine.io-client/issues/322. When a new
+  version of `engine.io` is released upstream, I will revert this.
+
 ## 1.0.0
 
 * Initial release
diff --git a/engine-io.cabal b/engine-io.cabal
--- a/engine-io.cabal
+++ b/engine-io.cabal
@@ -1,5 +1,5 @@
 name: engine-io
-version: 1.0.0
+version: 1.0.1
 synopsis: A Haskell implementation of Engine.IO
 homepage: http://github.com/ocharles/engine.io
 license: BSD3
diff --git a/src/Network/EngineIO.hs b/src/Network/EngineIO.hs
--- a/src/Network/EngineIO.hs
+++ b/src/Network/EngineIO.hs
@@ -73,6 +73,7 @@
 import qualified Data.Attoparsec.ByteString as Attoparsec
 import qualified Data.Attoparsec.ByteString.Char8 as AttoparsecC8
 import qualified Data.ByteString as BS
+import qualified Data.ByteString.Char8 as BSChar8
 import qualified Data.ByteString.Base64 as Base64
 import qualified Data.ByteString.Builder as Builder
 import qualified Data.ByteString.Lazy as LBS
@@ -566,8 +567,10 @@
         putStrLn $ "Unknown WebSocket message: " ++ show other
         receivePacket conn
 
-  sendPacket conn p@(Packet _ (TextPacket _)) = do
-    WebSockets.sendTextData conn (Builder.toLazyByteString (encodePacket False p))
+  sendPacket conn (Packet t (TextPacket text)) =
+    WebSockets.sendTextData conn $
+      Text.encodeUtf8 $ Text.pack $ BSChar8.unpack $ Text.encodeUtf8 $
+        Text.pack (pure $ intToDigit (packetTypeToIndex t)) <> text
 
   sendPacket conn p@(Packet _ (BinaryPacket _)) = do
     WebSockets.sendBinaryData conn (Builder.toLazyByteString (encodePacket True p))
