var socket = new Socket("localhost:4000")
socket.connect()
Возвращает WebSocket connection to 'ws://localhost:4000/ws' failed: Error during WebSocket handshake: Unexpected response code: 404
гнездо не будет подключаться к конечной точке
Но у меня есть разъем на /ws
конечной точке, не так ли?
defmodule Sapphire.Endpoint do
use Phoenix.Endpoint, otp_app: :sapphire
socket "/ws", Sapphire.MomentSocket
plug Plug.Static,
at: "/", from: :sapphire, gzip: false,
only: ~w(css fonts images js favicon.ico robots.txt)
if code_reloading? do
socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
plug Phoenix.LiveReloader
plug Phoenix.CodeReloader
end
plug Plug.RequestId
plug Plug.Logger
plug Plug.Parsers,
parsers: [:urlencoded, :multipart, :json],
pass: ["*/*"],
json_decoder: Poison
plug Plug.MethodOverride
plug Plug.Head
plug Plug.Session,
store: :cookie,
key: "_sapphire_key",
signing_salt: "hW1bFEcR"
plug Sapphire.Router
end
Он должен быть способен подключиться к этой конечной точке, но по какой-то причине он не может достичь этого вообще.
[info] Running Sapphire.Endpoint with Cowboy on http://localhost:4000
Поскольку вы обращаетесь к 'ws: // localhost: 4000/ws', у меня есть подозрение, что вы используете старый клиент Phoenix с недавним приложением Phoenix. Убедитесь, что вы используете Phoenix 1.0.2 и что у вас есть последняя копия Phoenix.js. –
@ JoséValim Хм, я портировал https://github.com/phoenixframework/phoenix/blob/master/web/static/js/phoenix.js в coffeescript, в котором интерфейсный сервер обслуживается на другом сервере. Клиент загружает '/ ws', поэтому у меня есть' socket '/ ws ", Sapphire.MomentSocket', который не должен быть доступен на пути'/ws'? Даже изменение обоих в '/ socket' возвращает то же самое 404. Меня интересует, как эта конечная точка сокета подвергается воздействию. – iColor
URL-адрес: socket_path + transport_name. Таким образом, это должно быть/socket/websockets или что-то в этом роде. –