Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
It's a box. It's a websocket. It's an example.
Documentation
>>>
:set -XOverloadedStrings
>>>
import Box
>>>
import Box.Websocket.Example
>>>
import Control.Concurrent.Async
senderExample :: [Text] -> IO [Text] Source #
A server that only sends and a client that only receives.
>>>
senderExample ["a","b"]
["a","b"]
echoExample :: [Text] -> IO [Text] Source #
echo server example
>>>
echoExample ["a","b","c"]
["echo: a","echo: b","echo: c"]
echoLogExample :: [Text] -> IO ([Text], [Text]) Source #
echo server example, with event logging.
The order of events is non-deterministic, so this is a rough guide:
echoLogExample ["a","b","c"]
(["echo: a","echo: b","echo: c"],["client:sender_:emit:Just "a"","client:sender_:sendTextData:Right ()","client:sender_:emit:Just "b"","client:sender_:sendTextData:Right ()","client:sender_:emit:Just "c"","client:sender_:sendTextData:Right ()","client:sender_:emit:Nothing","client:sender_ closed with SocketOpen","server:receiver_:receiveData:Right "a"","server:receiver_:receiveData:Right "b"","server:receiver_:receiveData:Right "c"","server:sender_:emit:Just "echo: a"","server:sender_:sendTextData:Right ()","server:sender_:emit:Just "echo: b"","server:sender_:sendTextData:Right ()","server:sender_:emit:Just "echo: c"","server:sender_:sendTextData:Right ()","client:receiver_:receiveData:Right "echo: a"","client:receiver_:receiveData:Right "echo: b"","client:receiver_:receiveData:Right "echo: c"","server:receiver_:receiveData:Left (CloseRequest 1000 "close after sending")","server:receiver_ closed","client:receiver_:receiveData:Left (CloseRequest 1000 "close after sending")","client:receiver_ closed","client:duplex_ closed","server:duplex_ closed"])
"q" to close the client, reads and writes from std
>>>
clientIO
*** Exception: Network.Socket.connect: <socket: ...>: does not exist (Connection refused)