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 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或類似的東西。 –