我试图打开一个直接的WebSocket连接到我的作用电缆的路线。不幸的不工作。卷曲或只是击中http://localhost:3000/cable
直接当我只得到这个错误..
Started GET "/cable" for 127.0.0.1 at 2019-02-06 20:04:08 -0600
Started GET "/cable/"[non-WebSocket] for 127.0.0.1 at 2019-02-06 20:04:08 -0600
Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: keep-alive, HTTP_UPGRADE: )
Finished "/cable/"[non-WebSocket] for 127.0.0.1 at 2019-02-06 20:04:08 -0600
这是我的客户除外:
java.net.ProtocolException: Expected HTTP 101 response but was ‘404 Not Found’
但是,如果我打http://localhost:3000/page/index
用浏览器,我看到下面的输出:
Started GET "/page/index" for 127.0.0.1 at 2019-02-06 20:05:30 -0600
Processing by PageController#index as HTML
Rendering page/index.html.erb within layouts/application
Rendered page/index.html.erb within layouts/application (0.3ms)
Completed 200 OK in 28ms (Views: 25.5ms | ActiveRecord: 0.0ms)
Started GET "/cable" for 127.0.0.1 at 2019-02-06 20:05:30 -0600
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2019-02-06 20:05:30 -0600
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
User Load (0.7ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT $1 [["LIMIT", 1]]
↳ app/channels/application_cable/connection.rb:12
Registered connection (Z2lkOi8vd2hvcy1yZWFkeS1hcGkvVXNlci8z)
RoomChannel is transmitting the subscription confirmation
RoomChannel is streaming from room_channel
RoomChannel is transmitting the subscription confirmation
RoomChannel is streaming from room_channel
以下是相关的文件,让我知道如果我需要分享更多:
#routes.rb
Rails.application.routes.draw do
mount API::Base, at: '/'
mount ActionCable.server => '/cable/chat'
get 'page/index'
root 'page#index'
end
#page_controller.rb
class PageController < ApplicationController
def index
end
end
我想简单地通过卷边到ActionCable服务器路线去WebSocket的连接。那可能吗?
问题是,我没有在发送HTTP请求的Origin
头等等allowed_request_origins
不可能匹配任何内容。正因为如此,这是给有关无法在HTTP连接到WebSocket一个转换这个超级令人费解的错误消息。