MtGox 流媒體 API 主機之間有什麼區別?
我試圖找出MtGox 流 API
websocket.mtgox.com
之間和之間socketio.mtgox.com
的區別。查看連接部分,看起來有幾種組合可以使用:websocket.mtgox.com/mtgox socketio.mtgox.com/mtgox
都使用http或https。
據我所知,沒有提到它們是不同的,但是,我通過自己的嘗試知道它們的行為確實不同。我還在論壇上看到其他人有與我相關的類似問題/問題。
有誰知道有什麼區別?這些差異是否也在某處預期並記錄在案?
此外,程式碼片段使用 https 作為協議。請原諒我的無知,但我們不應該使用ws或wss代替http和https嗎?有人可以解釋這種區別嗎?
提前感謝您提供與我的問題相關的任何資訊!
更新: 實際上,看起來websockets 的 URI 方案應該是 ws: 或 wss: 而不是範例 http: 或 https:。也許這是範例中的拼寫錯誤,或者 MtGox 的交易是什麼?
更新: 所以在瀏覽器中測試東西,
{ws,wss,http,https}://socketio.mtgox.com/mtgox
一切正常,我看不出有什麼區別。另一方面,{ws,wss,http,https}://websocket.mtgox.com/mtgox
所有這些都會導致 HTTP 400 錯誤請求。在瀏覽器控制台中查看我收到以下錯誤:XMLHttpRequest cannot load http://websocket.mtgox.com/socket.io/1/?t=1367857246057. Origin null is not allowed by Access-Control-Allow-Origin.
任何想法可能會發生什麼?
好的,所以在瀏覽器中玩了一段時間之後,我發現了一些可能有些明顯的事情。:)
因此,即使沒有提及它
websocket.mtgox.com
與socketio.mtgox.com
它的實際不同,區別在於前者是一個真正的 WebSocket 端點,而後者是一個 Socket.IO 端點。看著名字當然並不奇怪;)現在對於像我這樣的初學者來說這並不完全明顯,因為我認為 Socket.IO 可以說 WebSocket,因此端點是相同的。因此,這個問題。這不是這裡的情況。Socket.IO 端點接受所有 URI 方案 {http, https, ws, wss} 而真正的 WebSocket 端點只接受預期的 {ws, wss}。
目前我所有的組合都在工作。
http://socketio.mtgox.com/mtgox https://socketio.mtgox.com/mtgox ws://socketio.mtgox.com/mtgox wss://socketio.mtgox.com/mtgox ws://websocket.mtgox.com/mtgox wss://websocket.mtgox.com/mtgox
尚不清楚 http 和 https URI 方案是否有意義,或者它們是否恰好起作用。大概就是這樣吧。
簡而言之,有兩台主機:一台用於 Socket.IO,一台用於 WebSocket,它們都可以使用或不使用 TLS。
現在允許使用 Origin null。
您的 Origin 標頭未設置。
嘗試在瀏覽器中從實際域名而不是 about:blank 執行您的程式碼。
在 Chrome 執行中:
var ws = new WebSocket('ws://websocket.mtgox.com/mtgox'); ws.onmessage = function(e){ console.log(e); };
導致 about:blank 失敗。但是,從實際域名的結果來看是成功的。