Skip to content

Instantly share code, notes, and snippets.

@FruitieX
Created March 14, 2018 14:07
Show Gist options
  • Save FruitieX/f9d54caf5a7e7305c169bb0a938b6cbc to your computer and use it in GitHub Desktop.
Save FruitieX/f9d54caf5a7e7305c169bb0a938b6cbc to your computer and use it in GitHub Desktop.
handleMessage
:: forall e
. SockJS.Connection
-> Message
-> Eff (console :: CONSOLE | e) Unit
handleMessage conn (CurrentQueue message) = do
-- how to modify state here?
log $ "queue message: " <> unsafeStringify message
handleMessage conn (PlayPause message) = do
log $ "play/pause message: " <> unsafeStringify message
handleMessage conn (Skip message) = do
log $ "skip message: " <> unsafeStringify message
handleMessage conn (Seek message) = do
log $ "seek message: " <> unsafeStringify message
decodeMessage
:: forall e
. SockJS.Connection
-> SockJS.Message
-> Eff (console :: CONSOLE | e) Unit
decodeMessage conn message = do
let (decoded :: Maybe Message) = hush $ readJSON message
_ <- traverse (handleMessage conn) decoded
pure unit
runApp
:: forall e
. SockJS.Server
-> StateT AppState (Eff (console :: CONSOLE | e)) Unit
runApp sockjs = do
liftEff $ SockJS.onConnection sockjs \conn -> do
log "client connected"
SockJS.onData conn $ decodeMessage conn
SockJS.onClose conn $ log "client disconnected"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment