1

我正在运行一个由 F# 中的后端 Suave 应用程序提供的 PureScript 应用程序。在前端,我需要在 PureScript 中打开一个到后端的 WebSocket 连接,但部分路径需要根据后端应用程序的运行方式是动态的(例如,在某些盒子上它是:ws://host1:9999/ws/blah,在其他盒子上它可能是ws://host2:7777/ws/blah)。

所以我需要获取我的应用程序正在提供的当前 URL,以便我可以将 aws://放在前面,然后将 aws/blah放在最后(或者以某种方式做一个相对的 WebSocket 路径?)。

我试过做类似的事情:

wdw <- window
htmldoc <- document wdw
let doc = htmlDocumentToDocument htmldoc
docUrl <- url doc
connection <- WS.create (WS.URL $ "ws://" <> docUrl <> "ws/blah") []

但是给出的文档 URLhttp://在它的前面。我可以破解字符串并将那部分撕掉,但我希望找到一种更优雅的方式。

如果重要的话,我也在这里使用卤素,所以如果那里有对这种情况有用的东西,我可以访问他们的 API。

4

1 回答 1

1

我能够根据上面stholzm 的建议拼凑起来。

在 location 的文档中,HostnamePort的函数可用于拼凑基本 url。位置可以通过接收窗口实例的位置函数获得。

最后,我的代码看起来像

在此处输入图像描述

于 2018-04-02T12:56:58.440 回答