我試圖創建一個WebSocket客戶端來連接到現有服務器(mtgox api)。如何在連接到Haskell中的websocket時添加標題
作爲一個出發點,找出連接的WebSockets,我發現這個示例代碼https://github.com/jaspervdj/websockets/blob/master/example/client.hs
的問題是,Mtgox需要頭要當它連接一起發送,我只是不知道如何發送他們。
更新:爲了解決這個問題,我創建了一個簡單的websocket服務器。當我通過一個JavaScript的WebSocket連接到它從我的Chrome的JavaScript控制檯,我看到下面的標題:
requestHeaders = [("Upgrade","websocket"),("Connection","Upgrade"),
("Host","127.0.0.1:8001"),("Origin","chrome://newtab"),("Pragma","no-cache"),
("Cache-Control","no-cache"),("Sec-WebSocket-Key","yOsPEMHx9AyT9u3ssNma/Q=="),
("Sec-WebSocket-Version","13"),("Sec-WebSocket-Extensions","x-webkit-deflate-frame"),
("User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36")]
然而,當我通過Haskell的客戶端連接通過,我只看到下面的標題:
requestHeaders = [("Host","127.0.0.1"),("Connection","Upgrade"),
("Upgrade","websocket"),("Sec-WebSocket-Key","X3hMDW4fAau53dbz7w4MTw=="),
("Sec-WebSocket-Version","13")]
我不知道MtGox實際需要哪些頭文件,但我的計劃是發送Chrome發送的相同頭文件,因爲這是有效的。
這個問題是關於使用JavaScript WebSockets發送自定義標題。當您使用JavaScript客戶端時,會自動添加一些標準標頭,而MtGox api則需要這些標頭。 –