【发布时间】: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