发生WebSocket错误:参数数量错误(给定2,预期为1)

时间:2017-05-27 08:53:50

标签: ruby-on-rails-5 actioncable

我尝试创建与有线服务器的连接并在频道上订阅,但是我收到了日志错误:

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)

我的代码:

// 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

特定频道:

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

  def unsubscribed; end
end

和ActionCable连接:

# 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 - 只是空的。我将不胜感激任何帮助。提前致谢

1 个答案:

答案 0 :(得分:2)

我解决了这个问题。该项目使用Passenger Phusion作为应用服务器,5.0.x版本与rails 5.1和动作电缆严重结合。您应该将乘客更新到5.1.x