[Haskell-beginners] Websockets Library

Noah Sluss slussnoah at gmail.com
Sun Aug 23 22:06:13 UTC 2015


Hello,

I've been trying to use the WebSockets library to connect to the
coinbase feed. The library seems to be doing something behind the scenes
that I'm not expecting.

Here is my code:

> {-# LANGUAGE ViewPatterns #-}
> {-# LANGUAGE OverloadedStrings #-}
>


> import Data.Text
> import Data.Text.Encoding (decodeUtf8)
> import Network.WebSockets
> import qualified Data.ByteString.Lazy as LBS
>


> main :: IO ()
> main = runClient "ws-feed.exchange.coinbase.com" 8080 "/"
>  handleConnection
> handleConnection connection = do
>   send connection initSub
>   let loop = do
>         priceMsg <- receiveDataMessage connection
>         print priceMsg
>   loop
>


> initSub :: Message
> initSub = DataMessage $ Text "{\"type\":\"subscribe\",
> \"product_id\":\"BTC-USD\"}"


When I run this, I get a print out showing a malformed response exception
with a Moved permanently message. Now, it also shows the location that I
was trying to connect to, which is: "https://ws-feed.exchange.coinbase.com/
".

This isn't right, because the websocket feed uses the wss:// protocol
rather than https://. i've tried changing the url to be "wss://
ws-feed.exchange.coinbase.com/", but when I try that, dns resolution fails.
If I had to guess, I could imagine that it tries to look for "https://wss://
ws-feed.exchange.coinbase.com", which would obviously not work. I'm
wondering if there is a way within the library to change the protocol that
 client uses. If there is, it doesn't seem to be documented.

Any insights as to what's going on here would be incredibly helpful.

Thanks,
Noah
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150823/814c1a72/attachment.html>


More information about the Beginners mailing list