Socket won't connect to Endpoint

故事扮演 提交于 2019-12-22 06:56:19

问题


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


回答1:


@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. :)




回答2:


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.



来源:https://stackoverflow.com/questions/32665406/socket-wont-connect-to-endpoint

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!