idris-lang / Idris2

A purely functional programming language with first class types
https://idris-lang.org/
Other
2.5k stars 375 forks source link

Web socket client gives error 107 #770

Open notooth1 opened 3 years ago

notooth1 commented 3 years ago

Hello,

I expected to get a web socket stream from this code, but I got a socket error 107. Can anyone help?

module Main

import Network.Socket

stream : Either SocketError Socket -> IO ()
stream (Left error) = putStrLn $ "Error: " ++ (show error) ++ ". Failed to create a socket."
stream (Right sock) = do
                           connectCode <- connect sock (Hostname "testnet-dex.binance.org/api/ws/BNB_USDT.B-B7C@trades") 443
                           putStrLn $ "Connect code = " ++ (show connectCode)
                           str <- recv sock 8192
                           putStrLn $ "Stream: " ++ (show str)

main : IO ()
main = do
    eSocket <- socket AF_INET Stream 0
    stream eSocket

The output is:

Connect code = 0
Stream: Left 107
ywata commented 3 years ago

I think the usage is not what connect is intended. The issuer's intention seems to get some information from API provided by testnet-dex.binance.org. But connect can setup TCP connection to a host(not URL).

% curl https://testnet-dex.binance.org/api/ws/BNB_USDT.B-B7C@trades 
Invalid topic (trades)/symbol(BNB_USDT.B-B7C)

I don't think this is what is expected but providing "testnet-dex.binance.org" instead of original Host argument gives me no error(with no information as expected).