Mtgox

MtGox 流媒體 API 主機之間有什麼區別?

  • June 6, 2013

我試圖找出MtGox 流 APIwebsocket.mtgox.com之間和之間socketio.mtgox.com的區別。查看連接部分,看起來有幾種組合可以使用:

websocket.mtgox.com/mtgox
socketio.mtgox.com/mtgox

都使用httphttps。

據我所知,沒有提到它們是不同的,但是,我通過自己的嘗試知道它們的行為確實不同。我還在論壇上看到其他人有與我相關的類似問題/問題。

有誰知道有什麼區別?這些差異是否也在某處預期並記錄在案?

此外,程式碼片段使用 https 作為協議。請原諒我的無知,但我們不應該使用wswss代替httphttps嗎?有人可以解釋這種區別嗎?

提前感謝您提供與我的問題相關的任何資訊!

更新: 實際上,看起來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.comsocketio.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 失敗。但是,從實際域名的結果來看是成功的。

引用自:https://bitcoin.stackexchange.com/questions/10625