2015-09-23 2 views
3

Я хочу использовать Elm для моего веб-интерфейса и Rust для сервера. Но я столкнулся с проблемой, когда версия websockets из elm-socketio не работает с rust-websocket. Насколько я могу сказать, elm-socketio имеет версию websockets версии 2.0.0 (строка, которую я нашел в поиске socketio.js, которая поставляется с elm-socketio), в то время как rust-websocket имеет версию «13». В Rust исключение происходит, когда получена несогласованная версия. Я закомментирована проверкой версии просто чтобы посмотреть, что произойдет, и я получаю это:Elm websockets with the Rust server

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 для websockets и отличается от RFC6455, к которой относится ржавчина-websocket (и имеет версию «13»)?

+0

Вы предоставляете заголовок 'Sec-WebSocket-Key', где это необходимо? Кроме того, я думаю, что эти версии являются версиями * библиотек *, не обязательно версией протокола websocket. – Shepmaster

+0

Знаешь, я понятия не имею. Я беру демо-сервер ржавчины и тестирую его с демо-клиентом вяза. Клиент 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. Наверное, я просто думал, что это то, что они назвали своей библиотекой веб-карт. Я не знаю, что мне действительно нужен socket.io (видя, что я не знаю, что это был ха-ха), поэтому я мог бы пойти в другом направлении и найти вместо этого библиотеку вяза. Я вообще не вижу ржавчины socket.io lib. – Bzzt