在 Elm 中,如何根据用户输入打开 websocket?

In Elm, how can i open a websocket based on user input?

我有一个代理接受 websocket 连接,并根据 url 查询参数将消息路由到该连接。

我考虑编写一个客户端(在 Elm 中)接受用户的输入,然后基于该输入打开一个 websocket 连接。我将如何使用(高级)Websocket 模块(如果可能)做到这一点?

这可以使用 Websocket 模块轻松实现。由于订阅会在模型更新时更新,因此只需生成 Websocket.listen 创建的订阅列表即可。如果用户操作向模型添加值,则该值可用于创建新订阅。

type alias Model = 
  { servers: List Url }

subscriptions model = 
  Sub.batch (List.map (\url -> Websocket.listen url ...) model.servers)