Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/infitio/flutter_socket_io
Socket IO supprt for flutter. Looking for contributors Swift and Java.
https://github.com/infitio/flutter_socket_io
android flutter flutter-plugin ios mobile-development socket-client socket-io socket-io-client websocket websocket-client
Last synced: about 4 hours ago
JSON representation
Socket IO supprt for flutter. Looking for contributors Swift and Java.
- Host: GitHub
- URL: https://github.com/infitio/flutter_socket_io
- Owner: infitio
- License: other
- Created: 2018-11-15T20:26:43.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2023-02-03T19:05:46.000Z (almost 2 years ago)
- Last Synced: 2024-06-19T17:50:59.753Z (5 months ago)
- Topics: android, flutter, flutter-plugin, ios, mobile-development, socket-client, socket-io, socket-io-client, websocket, websocket-client
- Language: Dart
- Homepage:
- Size: 486 KB
- Stars: 191
- Watchers: 12
- Forks: 112
- Open Issues: 67
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# adhara_socket_io
[![.github/workflows/flutter_integration.yaml](https://github.com/infitio/flutter_socket_io/actions/workflows/flutter_integration.yaml/badge.svg?branch=main)](https://github.com/infitio/flutter_socket_io/actions/workflows/flutter_integration.yaml)
[socket.io](https://socket.io/) for flutter by [adhara](https://github.com/infitio/)
supports both Android and iOS
socket.io version supported: v2
development in progress for v3 and v4> If you are using v3/v4 socket on server side, you may face connection issues, please downgrade and try in such scenario.
Usage:
> See `example/lib/main.dart` for more detailed example
```dart
final SOCKET_SERVER = 'http://192.168.1.2:7070/'; //To be modified accordingly
SocketIO socket;
StreamSubscription connectSubscription;
StreamSubscription echoSubscription;Future demonstrateSocket() async {
// Create a socket instance
socket = await SocketIOManager().createInstance(
SocketOptions(SOCKET_SERVER),
);// Listen to socket connect event
subscription = socket.onConnect.listen((data){
print('connected: $data');
socket.emit('message', ['Hello world!']);
});// Listen to an custom ("news") event
echoSubscription = socket.on('echo', (data){
print("news event recieved with data: $data");
});// There are 2 ways to connect to socket server
// - normal: doesn't wait for connectio success
// - sync: ensures connection or errors out on failure// normal:
// connect to socket server - will initialize connection,
// but not ensure the connection yet.
// If this method used to connect to server, then emit events should be sent
// only after ensuring connection to socket server is successful by listening
// to onConnect events
// await socket.connect();// sync:
// This API will ensure connection to server is successful
// or will throw error on connect error
await socket.connectSync();// publish data - will publish to server, won't ensure the delivery
await socket.emit('echo', ['hello']);// emit with acknowledgement - will publish to server
// and ensure delivery with ack if ack is implemented in server
dynamic ackData = await socket.emitWithAck('echo', ['hello']);
print('acknowledgement recieved from server: $ackData');
}Future dispose() async {
// cancel echo and onConnect subscriptions
await echoSubscription.cancel();
await connectSubscription.cancel();// clear socket instance from manager
await SocketIOManager().clearInstance(socket);
}// register liteners, connect to a socket, and publish data
demonstrateSocket();// will dispose listeners and socket
dispose();
```## Running example:
1. clone the project
2. start socket server in the background
```bash
cd socket.io.server
npm i
./node_modules/.bin/pm2/ index.js
cd ../
```3. open `example/lib/main.dart` and edit the `URI` in #7 to point to your hosted/local socket server instances as mentioned step 2
For example:
```dart
const String URI = "http://192.168.1.2:7000/";
``````dart
const String URI = "http://mysite.com/";
```3. run example
```
cd example
flutter run
```## iOS support 📢📢
This project uses Swift for iOS support, please enable Swift support for your project for this plugin to work## Android support for SDK > 27
Configure `android:usesCleartextTraffic="true"` as a property of `` tag in `android/app/src/main/AndroidManifest.xml`
For example:
```xml
...
...```
[Refer to discussion here](https://github.com/infitio/flutter_socket_io/issues/42)
## Running tests
This plugin uses flutter driver to run integration tests tests. Use below command to run integration tests on Android/iOS
```bash
sh bin/run_tests.sh
```## Sample Video - Running the example
[![Running adhara socket io for flutter, example](https://img.youtube.com/vi/rc6Kv95FJ4M/0.jpg)](https://www.youtube.com/watch?v=rc6Kv95FJ4M "Running the example")
## FAQ's
##### AdharaSocketIoPlugin.m:2:9: fatal error: 'adhara_socket_io/adhara_socket_io-Swift.h' file not found
add `use_frameworks!` to your Podfile as in the example
https://github.com/infitio/flutter_socket_io/blob/master/example/ios/Podfile#L30Read more about this: [discussion](https://github.com/infitio/flutter_socket_io/issues/58)
## Other Packages:
Feel free to checkout our [Adhara](https://pub.dartlang.org/packages/adhara) package