ws-chans alternatives and similar packages
Based on the "network" category.
Alternatively, view ws-chans alternatives based on common mentions on social networks and blogs.
-
compendium-client
Mu (μ) is a purely functional framework for building micro services. -
resolv
Domain Name Service (DNS) lookup via the libresolv standard library routines -
network-data
Network data structures in Haskell (IP, UDP, TCP headers, etc) -
windns
Domain Name Service (DNS) lookup via the Windows dnsapi standard library -
hatexmpp3
XMPP client with synthetic filesystem (9P) and (optional) graphical (GTK3) interfaces -
hsendxmpp
sendxmpp clone and drop-in replacement, sending XMPP messages via CLI -
LDAPv3
Lightweight Directory Access Protocol V3 (LDAPv3) RFC4511 implementation -
transient-universe-tls
Secure communications for transient-universe -
iwlib
A binding to the iw library for getting info about the current WiFi connection. -
network-uri-lenses
lenses for http://hackage.haskell.org/package/network-uri -
oauth2-jwt-bearer
OAuth2 jwt-bearer client flow as per rfc7523. -
network-simple-wss
Simple Haskell interface to TLS secured WebSockets -
attoparsec-uri
A compositional URI parser / printer for attoparsec -
percent-encoder
A simple, fast percent encoder/decoder for bytestrings
Learn any GitHub repo in 59 seconds
Do you think we are missing an alternative of ws-chans or a related project?
README
ws-chans
Websockets represent a channel between a client and a server. ws-chans
carries this concept deeper into your code by setting up an Control.Concurrent.Chan.Unagi.InChan
and an Control.Concurrent.Chan.Unagi.OutChan
as an interface to a websocket server. To send a message to the server you simply write a message to the InChan
. To receive a message from the server you read from the OutChan
.
The tests are probably the best place to look at some example usage but basically:
import Control.Monad (forM, forever)
import Data.Text (Text)
import Network.WebSockets.Chan.Unagi as Unagi
example :: IO [Text]
example = do
(ic, oc, cic) <- Unagi.newChans "localhost" 8080 "" :: IO (Unagi.InChan Text, Unagi.OutChan Text, Unagi.InChan Text)
Unagi.writeList2Chan ic msgs
res <- forM msgs (\_ -> Unagi.readChan oc)
Unagi.writeChan cic ("finished" :: Text)
return res
newChans
returns a tuple of:
- an
InChan
which you write messages to, these will be sent to the websocket server - an
OutChan
which you read messages from, these are messages that have come from the websocket server - an
InChan
for closing the connection. This should have the same type as the firstInChan
. When you write a message to thisInChan
it will tell the server that you wish to close the connection. See the source code and Network.WebSockets.sendClose for more information on how this works.