【问题标题】:Get current base URL for web page获取网页的当前基本 URL
【发布时间】:2018-03-28 18:48:01
【问题描述】:

我正在运行一个 PureScript 应用程序,该应用程序由 F# 中的后端 Suave 应用程序提供服务。在前端,我需要在 PureScript 中打开到后端的 WebSocket 连接,但部分路径需要根据后端应用程序的运行方式是动态的(例如在某些盒子上是:ws://host1:9999/ws/blah,在其他盒子上是: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://。我可以破解字符串并将那部分撕掉,但我希望找到一种更优雅的方式。

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

【问题讨论】:

  • 没有时间写一个实际的答案,但在DOM.HTML.Location 有一些功能可能会有所帮助。

标签: websocket purescript halogen


【解决方案1】:

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

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

最后,我的代码看起来像

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 2020-11-06
    相关资源
    最近更新 更多