#ruby-on-rails #ruby-on-rails-6 #actioncable
Вопрос:
Я работаю над приложением для чата в реальном времени в Rails 6 с ОС Windows, и у моего ActionCable возникла проблема.
Адаптер разработки вообще не работает(я думаю), ни асинхронный, ни Redis. Я перепробовал все, но на этом я действительно застрял :(.
У меня есть канал под названием «комната» со следующей кодировкой на его внутренней стороне (приложение/каналы/room_channel.rb):
class RoomChannel lt; ApplicationCable::Channel def subscribed # stream_from "some_channel" reject unless params[:room_id] room = Room.find params[:room_id].to_i stream_for room end def unsubscribed # Any cleanup needed when channel is unsubscribed end end
И на его лицевой стороне: (app/javascript/room_channel.js):
import consumer from "./consumer" let url = window.location.href; let room_id = parseInt(url.substring(url.search("rooms/") 6) ); if (url.indexOf("rooms/") != -1) { console.log('Subscribed to room', room_id); consumer.subscriptions.create({ "channel": "RoomChannel", "room_id": room_id }, { connected() { console.log('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) { console.log('data received successfully') // Called when there's incoming data on the websocket for this channel } }); }
Когда я запускаю сервер, я могу подписаться и подключиться к каналу, но канал не может получать какие-либо входящие данные (в моем случае сообщения). Я знаю это, потому что он не выводит сообщение консоли («данные получены успешно»), когда я создаю новое сообщение в комнате.
Другая важная информация заключается в том, что, когда мой коллега запускает это приложение со своим компьютером с одинаковой кодировкой везде, он может получать данные (он получает вывод «данные получены успешно», когда отправляет сообщение в комнату). И, как я уже сказал, у нас везде одинаковая кодировка!
Поэтому я уверен в том, что это не ошибка кода, проблема в моем компьютере или я не знаю.
Кто-нибудь может помочь мне с этой проблемой? Спасибо, что прочитали и ждете ответов полезных людей! 🙂
Комментарии:
1. проверьте, не отключается ли ваше соединение по какой-либо причине. Выполните вход в консоль
disconnected
с помощью метода, указанного вroom_channel.js
файле