2015-09-23 42 views
3

我想要爲我的web前端使用Elm,而爲服務器使用Rust。但是,我遇到了一個問題,elm-socketio的websockets版本不適用於rust-websocket。據我可以告訴elm-socketio有websockets版本「2.0.0」(一個字符串,我發現搜索與elm-socketio自帶的socketio.js),而rust-websocket有版本「13」。在Rust中收到不匹配的版本時會發生異常。我註釋掉版本檢查只是爲了看看會發生什麼,我得到這個:與Rust服務器的榆木websockets

thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: RequestError("Missing Sec-WebSocket-Key header")', src/libcore/result.rs:731 

所以我想我的問題是可以在這兩種作出不顯著工作相互合作?是否真的有2.0.0的websocket,這是不同於RFC6455這是什麼rust-websocket指的(並有版本「13」)?

+0

你是否在適當的地方提供'Sec-WebSocket-Key'標頭?另外,我認爲這些版本是*庫*的版本,不一定是websocket協議的版本。 – Shepmaster

+0

你知道嗎,我不知道。我正在使用防火牆演示服務器並使用elm演示客戶端進行測試。 elm客戶端運行時會運行它所附帶的用於測試的node.js服務器。關於這個版本,我現在知道的是,這個版本不符合生鏽的預期。我會看看我能否打印出它的接收。 – Bzzt

+0

好吧,看起來像生鏽的版本是'沒有'。呵呵。 – Bzzt

回答

4

看來socket.io有它自己的協議(見https://github.com/socketio/socket.io-protocol)。 這很讓人困惑,因爲

「socket.io協議可以通過各種傳輸方式傳遞。」

Websockets是socket.io可能的傳輸層。 https://github.com/socketio/socket.io-protocol#transport

您需要找到一個rust-socket.io庫。

+0

ok websockets!= socket.io。我想我只是想這就是他們的websockets庫命名。我不知道我真的需要socket.io(因爲我不知道它是什麼哈哈),所以我可能會去另一個方向,而不是找到一個榆樹websocket庫。無論如何,我並沒有看到生鏽的socket.io文件。 – Bzzt