Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I got TypeError: Object is not async iterable error while trying to listen to message event in React Native app #150

Open
paulosabayomi opened this issue Jun 21, 2023 · 1 comment

Comments

@paulosabayomi
Copy link

Hi I am working on a React Native app and I have setup socketcluster websocket and I was able to connect to it from the app because I exposed the port of the websocket running locally on my PC with ngrok, but when I tried to listen to message events from the socket I keep getting TypeError: Object is not async iterable error in the command line and the app could not get any message from the socket

this is the code for listening to message event according to the documentation

try {
      for await (let data of this.socket_channel) {
                console.log('listenForData::: I got data from socket:::', data);
       }            
} catch (error) {
            console.log('socket message conn err', error);            
}

the socket initialization

this.websocket_instance = new SocketCluster.create({
  hostname: 'x.tcp.xx.ngrok.io',
  port: xxxxx
})

this.socket_channel = this.websocket_instance.subscribe(channel_name)
        
await this.socket_channel.listener('subscribe').once()

this.socket_channel.transmitPublish('hello from mobile phone')

the websocket connects successfully but I can't subscribe to message event and I can't get message from the socket

please is there any other ways I can subscribe to message event from the websocket except from using the for await (let data of this.socket_channel) { way, please help

@paulosabayomi paulosabayomi changed the title I got TypeError: Object is not async iterable error while trying to listen to message event I got TypeError: Object is not async iterable error while trying to listen to message event in React Native app Jun 21, 2023
@kyunkakata
Copy link

Use this code to fix that issue in React Native:

  subscribe = async (channelName, handler = (data) => {}) => {
    if (!this.socketInstance?.isSubscribed(channelName)) {
      let channel = this.socketInstance?.subscribe(channelName);
      const iterator = channel[Symbol.asyncIterator]();

      let result = await iterator.next();
      while (!result.done) {
        handler(result.value);
        result = await iterator.next();
      }
    }
  };

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants