Reputation: 270
var socket = new Socket("localhost:4000")
socket.connect()
Returns WebSocket connection to 'ws://localhost:4000/ws' failed: Error during WebSocket handshake: Unexpected response code: 404
But I do have the socket on the /ws
endpoint, right?
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
It should be able to connect to that endpoint, but for some reason it can't reach it at all.
[info] Running Sapphire.Endpoint with Cowboy on http://localhost:4000
Upvotes: 5
Views: 2059
Reputation: 1867
Full disclosure -- I'm a noob, and I'm probably screwing something up, but this is how I got back on track.
rm -rf deps/phoenix
This will clear out your present version of phoenix (which includes phoenix.js)
mix do deps.get
This pulls down phoenix again.
Hopefully this is enough to get you going again at this point -- but if you screwed up a migration like me, and you're on mac/linux, do a:
find . -name phoenix.js
Voila, there is the phoenix.js fixed by Jose. I was lazy and just copied over that phoenix.js to get things going for the time being.
Upvotes: 0
Reputation: 270
@JoséValim found the solution.
I was porting the phoenix.js library to coffeescript and missed the fact that the suffix of the path should be whatever the transport layer is. In this case, it needed /websocket
at the end in the implementation. :)
Upvotes: 6