2016-08-09 18 views
0

Webソケットを使用するPlay 2.5アプリケーションがあります。私のコントローラで私は現在、私のアプリケーションがローカルで実行されているように、私は動的にWebソケットのURLを取得

を使用したJavaScriptファイル内のソケットを参照することができ、それが

GET  /push-notifications   controllers.Application.socket 

としての私のルートにアクセスしています、

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

としてそれを確立し、

しかし、私は自分のものをローカルホストから移動し始めており、javascriptファイルのURLを参照する方法が必要です。このURLは変更される可能性があります(開発環境によって異なる場合があります)。では、このURLをどのように動的に参照できますか?それは私が私が私の設定ファイルでそれを解体し、そのようにやろうと考えたが、私はそれがうまくいくので、わからない

var socket = new Websocket(URL_OF_WEBSOCKET) 

を言いますか、です。

何かすべてのヘルプは高く評価されます。

答えて

1

プレーンジャバスクリプトを使用している場合。 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> 

私はすべてを1つのファイルに書きました。 configパーツを除外し、スクリプトタグのsrc属性でファイルをインポートします。そして、それを必要な場所で再利用することができます。

+0

私は非常に似たようなことをやりました。私は私の異なるソケットを 'conf'フォルダ内の異なる設定ファイルに入れました。それから私は 'ConfigFactor.load.getConfig(" ... ")'を使ってそれを取り出しました。ありがとう – LivingRobot

0

アプリケーションのメインページを取得するためのURLが同じかと仮定し、WebSocketのを接続して、部分的に同じである場合は、次のURL アプリ:myapp.com のWebSocket URL:myapp.com/push-notification だからで行うことができます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);

何かをwindow.locationを使用して、JSファイル..私はそれが役に立てば幸い 。

関連する問題