ruby-on-rails-5actioncable

WebSocket error occurred: wrong number of arguments (given 2, expected 1)


I try to create connection to cable server and subscribe on channel, but I get error with log:

Started GET "/cable" for 172.20.0.1 at 2017-05-27 08:29:39 +0000
Started GET "/cable/" [WebSocket] for 172.20.0.1 at 2017-05-27 08:29:39 +0000
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: upgrade, HTTP_UPGRADE: websocket)
WebSocket error occurred: wrong number of arguments (given 2, expected 1)

My code:

// order_slots.coffee
jQuery(document).ready ->
  //some jquery code that call create_channel function

create_channel = (order_id) ->
  App.cable.subscriptions.create {
    channel: "OrderSlotsChannel",
    order_id: order_id
  },
    connected: ->
    # Called when the subscription is ready for use on the server

    disconnected: ->
      # Called when the subscription has been terminated by the server

    received: (data) ->
      # Data received

Specific channel:

//order_slots_channel
class OrderSlotsChannel < ApplicationCable::Channel
  def subscribed
    stream_from "order_slots_#{params[:order_id]}_channel"
  end

  def unsubscribed; end
end

And ActionCable connection:

# Be sure to restart your server when you modify this file. Action Cable runs in a loop that does not support auto reloading.
module ApplicationCable
  class Connection < ActionCable::Connection::Base
    identified_by :current_user

    def connect
      self.current_user = find_verified_user
      logger.add_tags 'ActionCable', current_user.email
    end

    protected

    def find_verified_user
      verified_user = env['warden'].user
      verified_user || reject_unauthorized_connection
    end
  end
end

ActionCable::Channel::Base - is just empty. I will appreciate any help. Thanks in advance


Solution

  • I solved this problem. The project used Passenger Phusion as application server and 5.0.x version badly combine with rails 5.1 and action cable. You should update passenger up to 5.1.x