如何在 Julia 中编写 WebSocket 客户端?

Posted

技术标签:

【中文标题】如何在 Julia 中编写 WebSocket 客户端?【英文标题】:How can I write a WebSocket client in Julia? 【发布时间】:2016-09-06 00:28:42 【问题描述】:

我想通过 Julia 连接到 WebSocket。我试图从wss://echo.websocket.org 获得回声响应,但它似乎没有像我预期的那样响应。有趣的是,它似乎确实可以连接,而无效地址则不会。

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

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

julia> readline(client)
""

有可能做到这一点吗?

【问题讨论】:

网络套接字有一个特定的handshake and protocol;它不仅仅是一个回显 HTTP 服务器。这就是你的println 不起作用的原因。 【参考方案1】:

现在有一个特定的库https://github.com/JuliaWeb/WebSockets.jl。示例/chat.jl 和示例/chat-c​​lient.html 中提供了如何使用它的示例。

【讨论】:

【参考方案2】:

Web 套接字客户端无法通过打开套接字并直接对其进行读写来实现。有一个相当复杂的协议需要实现。此外,websocket 客户端旨在接收推送请求,因此需要某种方式来异步处理它们。

在 Julia 中实现了一个 websocket 客户端库:https://github.com/dandeliondeathray/DandelionWebSockets.jl

要安装它,请执行:Pkg.clone("https://github.com/dandeliondeathray/DandelionWebSockets.jl")

使用它需要为网络事件定义事件处理程序。请参阅此处以获取使用 echo 的示例:https://github.com/dandeliondeathray/DandelionWebSockets.jl/blob/b23307f360ef0b62e3064c6b1484599eb660f63f/examples/echo.jl

【讨论】:

以上是关于如何在 Julia 中编写 WebSocket 客户端?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Julia 中编写和读取包含日期时间列的 DataFrame

处理多种类型和数组时如何编写“好”的 Julia 代码(多重分派)

java是如何实现客服在线聊天功能的?

全新EasyRTC平台功能开发:如何基于websocket实现视频客服通信

(二十)ATP应用测试平台——websocket实现微服务版在线客服聊天室实战案例

如何在 Julia 中为可变结构设置默认参数?