チャネルが 1 つの単純なユーザー Websocket。このコード ワードは、フェニックス ガイドラインのハウツー セクションのほとんどからコピーしました。
最初のリクエストは私のリクエストです。これには、Facebook のログイン レスポンスからのユーザー認証トークンが含まれています。ご覧のとおり、これはphoenix.js
ファイルからのものであり、問題なく動作します... メッセージを送受信できます - 問題ありません。
2番目は完全に別の場所から来ているようで、その理由はわかりません!?
frame.js
これは私のファイルではないため、ある種の node_module 依存関係の一部である必要があります。js は 1 行に凝縮されており、正確には判読できません。
また、5秒ごとにログにこれを取得します。
phoenix_1 | [info] CONNECT GametimeWeb.UserSocket
phoenix_1 | Transport: :websocket
phoenix_1 | Connect Info: %{}
phoenix_1 | Parameters: %{"token" => "", "vsn" => "2.0.0"}
phoenix_1 | :invalid - this is the response the socket returns I have jsut inspected it and printed to logs.
phoenix_1 | [debug] invalid
phoenix_1 | [info] Replied GametimeWeb.UserSocket :error
ここで何が間違っていますか?
フェニックス 1.4.10
ユーザーソケット:
defmodule GametimeWeb.UserSocket do
use Phoenix.Socket
require Logger
## Channels
channel "sports:*", GametimeWeb.SportsChannel
# Socket params are passed from the client and can
# be used to verify and authenticate a user. After
# verification, you can put default assigns into
# the socket that will be set for all channels, ie
#
# {:ok, assign(socket, :user_id, verified_user_id)}
#
# To deny connection, return `:error`.
#
def connect(%{"token" => token}, socket) do
# max_age: 1209600 is equivalent to two weeks in seconds
case Phoenix.Token.verify(socket, "user socket salt", token, max_age: 1209600) do
{:ok, user_id} ->
{:ok, assign(socket, :user, user_id)}
{:error, reason} ->
Logger.debug IO.inspect(reason)
:error
end
end
エンドポイント コード:
defmodule GametimeWeb.Endpoint do
use Phoenix.Endpoint, otp_app: :gametime
socket "/socket", GametimeWeb.UserSocket,
websocket: true, # or list of options
longpoll: false