动态获取web套接字URL



我有一个使用web套接字的Play 2.5应用程序。在控制器中,我将其设置为

  def socket = WebSocket.accept[JsValue, JsValue] { request =>
    ActorFlow.actorRef(out => TroiWebSocket.props(db, out, comm.communicator, system))
  }

它在我的路由中被访问为

GET     /push-notifications         controllers.Application.socket

目前,我的应用程序在本地运行,我可以使用

在javascript文件中引用套接字。
var socket = new WebSocket("ws://localhost:9000/push-notifications");

然而,我开始移动我的东西远离本地主机,需要一种方法来引用我的javascript文件中的url。此URL可能会更改(并且可能根据开发环境而有所不同)。如何动态引用这个URL呢?也就是说,

怎么写
var socket = new Websocket(URL_OF_WEBSOCKET)

我想在我的配置文件中分解它,并尝试这样做,但我不确定这会起作用。

我将不胜感激。

如果你使用的是纯javascript。声明一个config.js文件,并定义一些全局对象和一些配置数据。

<html>
 <head>
  <script>
   var config = {
     "localWSUrl" : "ws://localhost:9000/socket",
     "wsUrl" : "ws://serverurl.com:443/socket"
   }
  </script>
  <script>
   console.log(config.wsUrl);
  </script>
 </head>
 <body>
 </body>
</html>

为简单起见,我把所有内容都写在一个文件中。您可以排除配置部分,并通过脚本标记的src属性导入该文件。然后你可以在需要的地方重用它

如果获取应用程序主页面的URL与连接websocket的URL相同或部分相同,假设:Url app: myapp.comWebsocket url: myapp.com/push-notification你可以在js文件中使用window.location/js标准api

var tcp = window.location.protocol === 'https:' ? 'wss://' : 'ws://'; var host = window.location.host; var path = '/push-notification'; var ws = new WebSocket(tcp+host+path);

大概是这样…

相关内容

  • 没有找到相关文章

最新更新