5

Rails 5 Beta に同梱されている ActionCable チャット ルーム サンプルを実行しました。Web アプリは、WebSocket を上下に流れるデータで問題なく動作しました。

wscatただし、コマンドラインから直接 WebSocket に接続しようとすると、接続エラーが発生しました。

wscat接続試行:

wscat -c ws://localhost:3000/cable

エラー応答:

error: Error: connect ECONNREFUSED

最初は、Rails の偽造防止機能が接続を禁止していると思っていました。そこで、以下を に追加しましたconfig/environments/development.rb

config.action_cable.disable_request_forgery_protection = true

ただし、同じ接続エラーが発生しました。

コマンドライン util を使用wsdして ActionCable WebSocket に接続してみました。wsdさらに悪いことに、カーネル パニックでクラッシュしました。

また、WebSocket Echo Test http://www.websocket.org/echo.htmlを含む他の WebSocket の両方wscatをテストしたところ、問題なく動作しました。wsd

私は困惑しています。助言がありますか?

4

1 に答える 1

1

1) スタンドアロン サーバー経由で ActionCable を起動します。(この手順は検証が必要ですが、現時点では ActionCable のドキュメントはまだ曖昧であるため、この作業を行うために行った手順をレイアウトします)。

bin/cableonを実行するrails 5.0.0beta1と、ポート 28080 で puma が起動するはずです。

(ヒント: puma はデフォルトでロードされるため、config/puma.rb で他の競合する puma プロセスが実行されていないことを確認してください。後で Rails アプリをデプロイしようとするときに、これを覚えておいてください。後で感謝します)

2)ActionCable::Connection::Baseすべての着信接続を処理し、ユーザーの識別方法 (例: current_user) または許可されていない接続の拒否方法を決定します。

actioncable の例 ( https://github.com/rails/actioncable-examples ) から、これは の Cookie によって定義され/app/channels/application_cable/connection.rbます。

からの Websocket 接続は、wscatパス認証なしで拒否されます。ニーズに合わせてこれを微調整する必要があります。

ActionCable には他にもたくさんの「サプライズ」があります。この投稿を更新したり、iOS クライアントを ActionCable と通信させたりした私の経験を記録したブログ投稿を作成したいと考えています。

幸運を!

于 2016-01-29T04:18:48.243 に答える