2016-02-01 5 views
0

Я новичок в Ruby,Рубин WAMP-клиент камень - подключение к crossbar.io

Я пытаюсь использовать WAMP-клиент драгоценный камень, чтобы установить соединение с маршрутизатором crossbar.io. В Crossbar есть все настройки по умолчанию и приложение, созданное с помощью шаблона перекладины (python как back-end). Когда я подключение через браузер все нормально, но когда я пытаюсь использовать рубин просто

require "wamp/client" 
wamp_test = WAMP::Client.new("ws://127.0.0.1:8080") 
wamp_test.open 

У меня есть `handle_opening_handshake_response«: Необработанный ответ открытия рукопожатия # (Net :: WS :: Error)» ошибка. Я знаю, что для обработки рукопожатия мой WAMP-маршрутизатор должен отправлять протокол протокола HTTP 101, но он этого не делает (не видит его в wirehark). Пожалуйста, помогите мне.

запрос клиента:

GET/HTTP/1.1\r\n 
Upgrade: websocket\r\n 
Connection: Upgrade\r\n 
Sec-Websocket-Key: RggxGCwmcnVuEB08UQMCWA==\r\n 
Sec-Websocket-Version: 13\r\n 
Sec-Websocket-Protocol: \r\n 
Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\n 
Accept: */*\r\n 
User-Agent: Ruby\r\n 
Host: localhost:8080\r\n 
\r\n 
Full request URI: http://localhost:8080/ 
HTTP request 1/1 

маршрутизатор возвращение:

HTTP/1.1 200 OK\r\n 
Server: Crossbar/0.11.1\r\n 
Date: Mon, 01 Feb 2016 07:48:33 GMT\r\n 
Cache-Control: max-age=43200, public\r\n 
Expires: Mon, 01 Feb 2016 19:48:33 GMT\r\n 
Accept-Ranges: bytes\r\n 
Content-Length: 5085\r\n 
Content-Type: text/html\r\n 
Last-Modified: Thu, 28 Jan 2016 13:07:24 GMT\r\n 
\r\n 
HTTP response 1/1 
Line-based text data: text/html 

ответ

0

При использовании по умолчанию (генерируется) конфигурации Crossbar.io, попробуйте: ws://127.0.0.1:8080/ws вместо ws://127.0.0.1:8080. Транспорт WAMP-WebSocket находится в подпути.

Вы можете проверить, открыв http://127.0.0.1:8080 и http://127.0.0.1:8080/ws в своем браузере.

Также: ваш клиент не отправляет действительный список подпротоков WebSocket (Sec-Websocket-Protocol пуст). У Crossbar.io есть опция config, чтобы сделать это приемлемым (и предположим wamp.2.json), но лучше было бы активировать подпротокольные согласования WebSocket в вашей клиентской библиотеке WebSocket.

+0

Я добавил wamp_test = WAMP :: Client.new ("ws: //127.0.0.1: 8080/ws",: subprotocols => ["wamp.2.json"]) и теперь Sec-Websocket- Протокол - это wamp.2.json, но до сих пор нет соединения - такая же ошибка. Этот рубиновый камень является старым, поэтому я не уверен, поддерживает ли он WAMPv2 –

+0

Глядя на две реализации Ruby WAMP, которые мог найти быстрый поиск Google, исходя из их возраста, ни один из них не может поддерживать WAMP v2. – gzost

Смежные вопросы