Добавить пользователя в канал actioncable без обновления страницы. - PullRequest
0 голосов
/ 10 июня 2018

Когда я имею в виду действующие каналы, я имею в виду следующее: actioncable_channel.

После создания chatroom + chatroom_users пользователь должен обновить страницу, чтобы подключиться к этому конкретному каналу chatroom_id.Можно ли подключиться к этому каналу без перезагрузки страницы?

1 Ответ

0 голосов
/ 11 июня 2018

Возможно создать соединение на основе настраиваемого действия в вашем представлении (вместо обновления страницы).Посмотрите на код ниже,

createconusmer = (send_params) ->
  App.chatbot = App.cable.subscriptions.create { channel: "ChatbotChannel" , auth_token: send_params , url: string },
      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)

      speak: (data, responder, payload) ->
          @perform 'speak' , message: data , responder: responder , payload: payload 

Теперь вы можете определить пользовательскую функцию в вашем кофейном файле как,

nameclick = (value) ->
    createconusmer value

window["nameclick"] = nameclick

Теперь вы можете использовать функцию nameclick длясоздать новый поток.Кроме того, я добавляю свой фрагмент кода, чтобы убедиться, что они уникальны или нет, чтобы избежать добавления повторяющихся соединений.

connections = []

addConnection = (id) ->
  connections.push(id)

removeConnection = (id) ->
  index = connections.indexOf(id)
  connections.splice(index, 1) if index > -1

connectedTo = (id) ->
  connections.indexOf(id) > -1

nameclick = (value) ->
  if connectedTo(value) == false
    addConnection(value)
    createconusmer value
...