Я создаю REST API, используя Ruby on Rails в качестве бэкэнда.Этот API используется интерфейсом VueJS.Я не использую внешний интерфейс Rails, внешний интерфейс полностью независим.
Я установил соединение WebSocket с помощью ActionCable, но я пытаюсь отправить параметры в подписку.
У меня есть следующий канал ruby:
class WorkChannel < ApplicationCable::Channel
def subscribed
stream_from "works-#{params[:creator_id]}"
end
end
И в моем интерфейсе JavaScript я подписываюсь на канал, используя этот код:
const msg = {
command: 'subscribe',
identifier: JSON.stringify({
channel: 'WorkChannel',
}),
};
socket.send(JSON.stringify(msg));
Подписка прошла успешноесли я удаляю переменную в stream_from
части.
Во всех прочитанных мною руководствах и уроках я нашел только одно, объясняющее, как взаимодействовать с ActionCable без использования методов внешнего интерфейса Rails.Смотрите здесь для полного руководства.
Однако это руководство не отправляет данные в подписку, и я не могу найти их в документации.
Что такое синтаксис JSON объекта, который мне нужно отправить для эмуляции поведения App.cable.subscriptions.create({channel: 'WorkChannel',
creator_id: 1 }
?
Я пробовал разные синтаксисы, но ни один из них не работал:
const msg = {
command: 'subscribe',
identifier: JSON.stringify({
channel: 'WorkChannel',
}),
creator_id: 1,
};
или
const msg = {
command: 'subscribe',
identifier: JSON.stringify({
channel: 'WorkChannel',
creator_id: 1,
}),
};
и даже
const msg = {
command: 'subscribe',
identifier: JSON.stringify({
channel: 'WorkChannel',
}),
data: {
creator_id: 1,
},
};