获取网页的当前基数 URL

Get current base URL for web page

我是 运行 一个 PureScript 应用程序,由 F# 中的后端 Suave 应用程序提供服务。在前端,我需要在 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 如果其中有一些对这种情况有用的东西。

我可以根据上面的 stholzm's 建议拼凑起来。

在位置文档中,有 Hostname and Port that can be used to piece together the base url. The location can be obtained via the location function that takes in a window 个实例的函数。

最后,我的代码看起来像