@@ -17,6 +17,8 @@ import Control.Monad.Reader
17import GHCJS.Buffer
17import GHCJS.Buffer
18import JavaScript.TypedArray.ArrayBuffer as JS
18import JavaScript.TypedArray.ArrayBuffer as JS
19import GHCJS.Marshal.Pure
19import GHCJS.Marshal.Pure
20+import GHCJS.Foreign.Internal
21+import Data.Text.Encoding
21data JSWebSocket = JSWebSocket { unWebSocket :: WebSocket }
23data JSWebSocket = JSWebSocket { unWebSocket :: WebSocket }
@@ -28,8 +30,11 @@ newWebSocket _ url onMessage onOpen onClose = do
28 _ <- on ws message $ do
30 _ <- on ws message $ do
30 d <- getData e
32 d <- getData e
33+ liftIO $ case jsTypeOf d of
34+ String -> onMessage $ encodeUtf8 $ pFromJSVal d
31− ab <- liftIO $ unsafeFreeze $ pFromJSVal d
36+ ab <- unsafeFreeze $ pFromJSVal d
32− liftIO $ onMessage $ toByteString 0 Nothing $ createFromArrayBuffer ab
37+ onMessage $ toByteString 0 Nothing $ createFromArrayBuffer ab
33 _ <- on ws closeEvent $ liftIO onClose
38 _ <- on ws closeEvent $ liftIO onClose
34 return $ JSWebSocket ws
39 return $ JSWebSocket ws