2016-11-07 13 views
0

私はElmフロントエンドとElixir/PhoenixバックエンドでWebソケットを使い始めています。 Phoenixサーバーは、接続するuriをElmアプリケーションに伝える必要があります。 (たとえば、開発環境ではws://localhost:4000/socket/websocketですが、実稼働環境では他のものがあります)エリクシール/フェニックスのアプリは、どのようにWebSocket URIを知っていますか?

static_urlと同等のものがあることを期待していましたが、見つかりませんでした。ある?

(私は可能性をハードコーディングすることができ知っているが、フェニックスはすでにそれを知っている必要がありますように、それはそうです。)私は本当にこのためPhoenix.Endpointでヘルパー関数があるはずと考えたが、私は何も見つかりませんでした

+0

また、クライアントからホストを取得することもできます。 http://stackoverflow.com/a/40482399/649830 – bbz

答えて

0

おそらくもっと良い解決策がありますが、速くて汚いのは、Phoenixコントローラに渡されたconn引数を調べることです。それはあなたがのWebSocket URLを構築することができ、そこからhostportのような便利な場の束と、リクエストヘッダのリスト(のようなhostを、持っている。

0

一つの方法は、クリス・マッコードを経て、YourApp.Endpointにこの行を変更することです:これで

socket "/socket", Eecrit.UserSocket 

...:。

@socket_mount "/socket" 
def socket_uri() do 
    ws_url = String.replace_leading(url(), "http:", "ws:") 
    ws_url <> @socket_mount 
end 

socket @socket_mount, Eecrit.UserSocket 

注これはURIの最後に輸送/websocketを追加するために、クライアントが必要であることを

関連する問題