Webサイトメッセージのリアルタイムプッシュとキャッシュ処理
詳細
一:rails 5でActionケーブルを発売してメッセージを実現するwebsoketプッシュ
リファレンスリンク
https://ruby-china.org/topics/28935
https://ruby-china.org/topics/30494
https://ruby-china.org/topics/28480
二:いくつかの使用シーンの下のページでは、jsタイミングポーリングリフレッシュの方法を考慮することができます.(例えば、強制クリック処理では、メッセージがポップアップされません.)
下のセグメントを共有し、redisでメッセージレコードをキャッシュし、クリックすると表示がキャンセルされますが、実際の処理だけがステータスのコードを変更します.
一:rails 5でActionケーブルを発売してメッセージを実現するwebsoketプッシュ
リファレンスリンク
https://ruby-china.org/topics/28935
https://ruby-china.org/topics/30494
https://ruby-china.org/topics/28480
二:いくつかの使用シーンの下のページでは、jsタイミングポーリングリフレッシュの方法を考慮することができます.(例えば、強制クリック処理では、メッセージがポップアップされません.)
下のセグメントを共有し、redisでメッセージレコードをキャッシュし、クリックすると表示がキャンセルされますが、実際の処理だけがステータスのコードを変更します.
#
def not_opration_message
_employee_id=current_employee.id
@not_opration_message = Message.where("employee_id=? and state=0",_employee_id) #
render :layout=> false
end
#
def deal_with_system_message
_employee_id=current_employee.id
_messages=Message.where("id=?",params[:id]) #
_message.update_all(:state=>1) #
render :json => true
end
#
def delete_system_message
_employee_id=current_employee.id
redis=Redis::HashKey.new("user_#{_employee_id}")
redis.delete(params[:url])
render :json => true
end
#
def system_message
_employee_id=current_employee.id
redis=Redis::HashKey.new("user_#{_employee_id}")
if redis.blank?
render :json=> nil
else
render :json=> redis.to_json
end
end
# ,
def self.tell_customer_order_confirm customer_order
customer_order_detail = customer_order.order_details_userful
customer_order_detail.each do |detail|
Message.create(message:"#{customer_order.order_no} , ", url:"/admin/order_list?order_no=#{customer_order.order_no}",state:0,employee_id:detail.emp)
message_hash = Redis::HashKey.new("user_#{detail.emp}")
message_hash["/admin/order_list?order_no=#{customer_order.order_no}"] = "#{customer_order.customer_order_no} , "
end
end