获取网页的当前基本URL

时间:2018-03-28 18:48:02

标签: websocket purescript halogen

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

所以我需要获取我的应用程序正在提供的当前URL,以便我可以在前面添加ws://,在最后添加ws/blah(或者以某种方式执行相对WebSocket路径?)。

我尝试过这样的事情:

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

但是给出的文档URL前面有http://。我可以把绳子砍掉并撕掉那部分,但我希望能找到一种更优雅的方式。

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

1 个答案:

答案 0 :(得分:1)

我能够从上面的stholzm's建议中将它拼凑起来。

在位置文档中,有HostnamePort的函数可用于拼凑基本网址。可以通过location实例中的window函数获取该位置。

最后,我的代码看起来像

enter image description here