2016-05-13 6 views
0

私はPhoenix Chat Room Exampleを使用していますが、ルーティングに問題があります。 user_socket.exファイル内フェニックス経由で輸送ルートを削除するには?

defmodule Chat.UserSocket do 
    use Phoenix.Socket 

    channel "rooms:*", Chat.RoomChannel 

    transport :websocket, Phoenix.Transports.WebSocket 

    def connect(_params, socket) do 
    {:ok, socket} 
    end 

    def id(_socket), do: nil 
end 

私が持っている問題は、transport設定です。

transport :websocket, Phoenix.Transports.Websocket

は、トランスポートを設定するには、基本的にはディレクトリのようなものです。このソケットを介して接続するには、URLの末尾に/websocketが必要です。私はそれを優雅に取り除こうとしています。私はserver:portでWebsocketサーバーにアクセスさせようとしていますが、ディレクトリは必要ありません。


私はChat.UserSocketモジュールがlib/chat/endpoint.exから呼び出されたことがわかった:

この socketは、別の必要なディレクトリを追加して

socket "/Balancer", Chat.UserSocket

。したがって、websocketサーバーに接続するには、URLに/Balancer/websocketを追加する必要があります。私はその要件を削除しようとしています。私は言葉を短くすることができ、B/Wを使用することができますが、それはまったく直感的ではありません。また、私はエリクサー/フェニックスにはかなり新しいので、この厄介な質問をお詫び申し上げます。

答えて

2

Webサイト用に別のパスを設定することをお勧めします。そこにはJavaスクリプトのデフォルトのソケットのコンストラクタでは、標準の80または443ポートShall I use WebSocket on ports other than 80?

を使用することをお勧めである理由のカップルはwebsocket一部を追加しているが、あなたは簡単に、あなたがこのようにしたいものは何でも割り当てることができます。

socket.endPoint = "/ws" 
あなたはその後、ルートに一致させることができ、エンドポイントで

socket "/", Chat.UserSocket 

を、ユーザーソケットには、あなたが使用する必要があります

JS上のWebSocketのルートとして他のパスを使用せずに「/」を使用することは可能ですが、このチャットの例で試してみると、Chat.PageController.indexに一致することがわかります。あなたは輸送のために空の原子を試してみることができます:""、それはちょっとハッキーで動作しないかもしれませんので、私は/wsパスに固執します。

関連する問題