socketio / socket.io

Realtime application framework (Node.JS server)
https://socket.io
MIT License
61.29k stars 10.12k forks source link

socket.io-client does not work properly in Android(React-Native) with Laravel-echo #5143

Open Deep-Jani opened 4 months ago

Deep-Jani commented 4 months ago

When using Socket.io as a broadcaster in Laravel-echo, We are using Socketio from socket.io-client as a client for connecting to the socket ,joining into the channel and listen an event fired within the channel. While working with React Native v0.71.10, I am facing issue regarded to the listening to the event. The code works fine in iOS devices, but in Android it is not getting listened.

To Reproduce :- 1. these version of packages in package.json

"react-native": "0.71.10"
"laravel-echo": "^1.16.1"
"socket.io-client": "^4.7.5"

2. Add this in your useEffect

 import Socketio from 'socket.io-client';
 import Echo from 'laravel-echo/dist/echo';

const echo = new Echo({
  broadcaster: 'socket.io',
  host: SOCKET_URL,
  client: Socketio,
}); 

echo.channel('channel_name')
     .listen('.event', (data) => { console.log("πŸš€ ~ .listen ~ data:", data)  });

In iOS it works fine. In Android, there is no event log. We tried many suggestions from the community, seems like none of them works for this scenario.

Things we already tried :-

  1. Adding 'CORS' on the server side
  2. tried using android:usesCleartextTraffic="true"
  3. Also tried suggestions from the closed issue of the Repo
  4. Tried downgrading 'Socket.io-client' package from 4.7.5 (latest as of 19/07/2024) to all the suggested ones in the community
darrachequesne commented 4 months ago

Hi! Are you using the Android emulator? Or a real device?

Did you check our React Native guide?

Deep-Jani commented 4 months ago

Hi! @darrachequesne, thanks for responding. We have been trying this in both the real devices and emulators.

Yes, we checked react native guide from official socket.io docs.

darrachequesne commented 4 months ago

Are you able to create a basic Socket.IO connection with the socket.io-client package? Or does it fail too?

Deep-Jani commented 4 months ago

It connects and listens to the events of the basic Socket server implemented in Nodejs App.