2016-09-06 1 views
3

Я хотел бы подключиться к WebSocket через Julia. Я попытался получить ответ эха от wss://echo.websocket.org, но он, похоже, не реагирует так, как я ожидал. Интересно, что это похоже на соединение, хотя, в то время как неверный адрес не будет.Как я могу написать клиент WebSocket в Джулии?

julia> client = connect("echo.websocket.org", 443) 
TCPSocket(open, 0 bytes waiting) 

julia> println(client, "Hello, world!") 

julia> readline(client) 
"" 

Можно ли это осуществить?

+1

У веб-сокетов есть особое [рукопожатие и протокол] (https://en.wikipedia.org/wiki/WebSocket#Protocol_handshake); это не просто сервер HTTP echo. Вот почему ваш 'println' не будет работать. –

ответ

2

Веб-сокет клиенты не могут быть реализованы путем открытия сокета и чтения и записи непосредственно на него. Существует достаточно сложный протокол, который должен быть реализован. Кроме того, клиент websocket предназначен для получения push-запроса и, следовательно, должен каким-то образом обрабатывать их асинхронно.

Существует WebSocket клиент библиотека реализована в Джулии: https://github.com/dandeliondeathray/DandelionWebSockets.jl

Чтобы установить его, сделайте следующее: Pkg.clone("https://github.com/dandeliondeathray/DandelionWebSockets.jl")

Чтобы использовать это определение включает в себя обработчики событий для сетевых событий. См. Здесь пример использования эха: https://github.com/dandeliondeathray/DandelionWebSockets.jl/blob/b23307f360ef0b62e3064c6b1484599eb660f63f/examples/echo.jl

0

В настоящее время существует определенная библиотека https://github.com/JuliaWeb/WebSockets.jl. Примеры того, как его использовать, приведены в примерах/chat.jl и examples/chat-client.html.

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