私はProgramming Phoenixに従っていたが、JavascriptではなくフロントエンドにElmを使用していた。この本の第2部では、Webソケットの使い方について説明しています。本の実行例では、接続作成時にクライアント側がPhoenixに渡すための認証トークンを作成します。 Phoenixで提供されているJavascript Socket
クラスではこれが可能ですが、Elmでこれを行う明確な方法はありません(0.17時点とこの問題の日付)。Elmから接続時間websocketパラメータをPhoenixに渡すにはどうすればよいですか?
0
A
答えて
2
は、本のように、
window
に取り付けることにより、JavaScriptにトークンが見えるように。<script>window.auth_token = "<%= assigns[:auth_token] %>"</script>
web/static/js/app.js
には、Elmを起動するコードがあります。そこにトークンを渡します。エルム側でconst c4uDiv = document.querySelector('#c4u-target'); if (c4uDiv) { Elm.C4u.embed(c4uDiv, {authToken: window.auth_token}); }
- 、あなたは
programWithFlags
の代わりprogram
を使用します。 init
関数はflags引数をとります。 (私はPageChoice
引数が同様にあります理由は単一ページのアプリケーションのためのNavigationライブラリを使用しています。)type alias Flags = { authToken : String } init : Flags -> MyNav.PageChoice -> (Model, Cmd Msg)
init
内で、タックをURIクエリのペアとしてトークンに。トークンには奇数文字が含まれているため、uri-encodeする必要があります。これを行うための原油の方法があります。注:下記のelm-phoenix-socketライブラリを使用していますが、他のライブラリと同じハッカーが必要です。let uri = "ws://localhost:4000/socket/websocket?auth_token=" ++ (Http.uriEncode flags.authToken) in uri |> Phoenix.Socket.init |> Phoenix.Socket.withDebug |> Phoenix.Socket.on "ping" "c4u" ReceiveMessage
0
私はエルムからエンコードについては、ブライアンによってさえずるでここに着きました。 この場合、JavaScript側から処理したいと思っています。 Phoenixクライアントが設定する方法を再現しようとしました。代わりに、私は完全なエンドポイントを通過したトークンを渡すの ...
私はJSONでトークン私は、クライアント上で読んでハッシュ
<script id="app-json" type="application/json"><%= raw @json %></script>
を入れて、エルムに渡す
を埋め込みましたvar data = JSON.parse(document.getElementById("app-json").innerHTML)
var token = encodeURIComponent(data.token)
var elm = window.Elm.App.embed(document.getElementById("elm-container"), {
socketEndpoint: "ws://" + window.location.host + "/socket/websocket?token=" + token
})
関連する問題
- 1. WebSocket接続を終了するにはどうすればいいですか?
- 2. websocket接続から特定のサーバメッセージを取り出すにはどうすればよいですか?
- 3. 時間とともに変化するパラメータをSciLabに渡すにはどうすればいいですか?
- 4. elixir phoenixチャンネル内でwebsocketリクエストの完全なURLにアクセスするにはどうすればよいですか?
- 5. TCP接続をWebSocketに転送するにはどうすればよいですか?
- 6. 古いwebsocket接続を削除するにはどうすればよいですか?
- 7. Phoenix/Elixir/Erlangアプリケーションの稼働時間を確認するにはどうすればよいですか?
- 8. Jetty 9.2.2でMultiplexed WebSocket接続を作成するにはどうすればよいですか?
- 9. unificationengineを使用してwebsocketとsubscribeチャネルを接続するにはどうすればよいですか?
- 10. BLEの再接続時間を修正するにはどうすればよいですか?
- 11. $ routeProviderのコントローラにパラメータを渡すにはどうすればよいですか?
- 12. ログインアクションにパラメータを渡すにはどうすればよいですか?
- 13. urlパラメータをフォーム値に渡すにはどうすればよいですか?
- 14. オプションのパラメータをプロシージャに渡すにはどうすればよいですか?
- 15. Goのアリスミドルウェアにパラメータを渡すにはどうすればよいですか?
- 16. 静的クラスコンストラクタにパラメータを渡すにはどうすればよいですか?
- 17. パラメータをPython Hadoopストリーミングジョブに渡すにはどうすればよいですか?
- 18. PSUnitテストスクリプトにパラメータを渡すにはどうすればよいですか?
- 19. ダイアログのオープンイベントにパラメータを渡すにはどうすればよいですか?
- 20. VB.NETクラスにパラメータを渡すにはどうすればよいですか?
- 21. ブラウザのWebSocketクライアントを再接続するにはどうすればよいですか?
- 22. JAVAでwebsocketとsocket.ioでSSLに接続するにはどうすればいいですか?
- 23. 24時間から12時間に変換するにはどうすればよいですか?
- 24. スペースを含むパラメータを渡すにはどうすればよいですか?
- 25. $(リストセパレータ)をパラメータとして渡すにはどうすればよいですか?
- 26. defaultSharedPreferencesをaddPreferencesFromResourceに接続するにはどうすればよいですか?
- 27. プロデューサをアクタに接続するにはどうすればよいですか?
- 28. データベースをAPI.AIに接続するにはどうすればよいですか?
- 29. サーバーをAtlasに接続するにはどうすればよいですか?
- 30. MvxCommandをBottomBarに接続するにはどうすればよいですか?
コンテキスト内に上記のコードへのリンクを追加しました:https://github.com/marick/eecrit/blob/channels/web/elm/C4u.elmかなり粗末なものです。 –