22
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

websocket-rails: standaloneモードのサーバでSSL通信

Posted at

動作環境

  • rails 4.1.0
  • websocket-rails 0.7.0

websocket-railsを使ったところ、SSLのところでつまずいたのですがあまり情報もなかったのでメモしておきます。

standaloneモード

  • githubのwikiに記載されているように、PassengerでRailsアプリを起動している場合には、Railsアプリとは別にサーバを起動する必要があります。

  • Standalone server mode

  • しかし、websocketを利用しているページのプロトコルがhttpsの場合、websocketのプロトコルもSSL通信にする必要があります。
    仮に、websocketを利用しているページのURL(ここではhttps://example.com/dashboardとする)にアクセスした場合、次のようなエラーが出力されます。

ブラウザconsole
WebSocket connection to 'wss://example.com:3001/websocket' failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR

standaloneモードのサーバにSSLの設定

  • gemに用意されているrakeタスクを使うと、thinが起動します。このままだとSSL通信できません。
bundle exec rake websocket_rails:start_server
  • SSL通信をできるようにするには、websocketのconfigurationで、thinの起動オプションに次の設定を行います。
config/initializers/websocket_rails.rb
  config.thin_options = {
    ssl: true,
    ssl_key_file: 'path_to_ssl_key_file',
    ssl_cert_file: 'path_to_ssl_cert_file',
    ssl_disable_verify: true,
  }

こちらを設定したあとに、rakeタスクでサーバを起動すればhttpsのサイトでも、standaloneモードのサーバで、websocketが利用できるようになりました。


機会があれば、Apache側で一旦、wssの通信を受けて、reverse proxyでthinにはSSL無しでつなぐということも試してみたいと思っています。

22
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?