2015-09-23 43 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