Skip to content Skip to sidebar Skip to footer

Cannot Access Data From Actioncable On React Front-end

I am trying to broadcast Messages that belong to a certain Game from a rails backend using actioncable. In my messages_controller: def create @game = Game.find(message_params[

Solution 1:

I got help from a TCF at my school.

In my messages channel I changed it to:

defsubscribed@game = Game.find(params[:id][:game_id])
    stream_for @gameend

So, stream_for instead of stream_from.

Additionally, I also switched to using the npm package react-actioncable-provider.

My client side javascript is in React and looks like this:

import { ActionCable } from'react-actioncable-provider';
importReact, { Component, Fragment } from'react';
import { CABLE, AUTH_HEADERS } from'../constants';
import { connect } from'react-redux';
importMessagefrom'../components/Message';

classCableextendsComponent {

  render () {
    console.log("Cable.js")
    return (
      <Fragment><ActionCablekey={this.props.game_id}channel={{channel: "MessagesChannel", game_id:this.props.game_id }}
          onReceived={(data) => console.log("handleReceived: ", data)}
        />
    </Fragment>
    )
  }
}

constmapStateToProps = state => {
  return { state }
}

constmapDispatchToProps = dispatch => {
  return {
    getMessages: data =>dispatch({ type: "LOAD_MSGS", payload: data })
  }
}

exportdefaultconnect(mapStateToProps, mapDispatchToProps)(Cable);

I am now able to receive and responses from ActionCable.

Post a Comment for "Cannot Access Data From Actioncable On React Front-end"