Флаттер, реализующий socket.io с помощью dart - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь реализовать socket.io с моим приложением flutter, в настоящее время flutter поддерживает WebSocket, но я нашел способ для socket.io в пакете "dart.io", но я не могу понять, как отправить сообщение наконкретное событие.Любые предложения будут полезны:)

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Используя этот пакет flutter_socket_io , мне удалось подключиться к локальному серверу Socket IO.

SocketIO socket = SocketIOManager().createSocketIO("http://localhost:3000", "/");
socket.init();
socket.connect();

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

0 голосов
/ 10 января 2019

попробуйте использовать этот пакет флаттера 'adhara_socket_io' с помощью:

  1. Создать новый проект флаттера в Android Studio

  2. Добавьте следующую строку в'зависимости:' в файле 'pubspec.yaml'

    adhara_socket_io:

  3. Выберите в Android Studio «Инструменты» -> «Флаттер» ->'Flutter Packages Get'

  4. Заменить коды в main.dart следующими кодами:

    import 'package: flutter / material.dart';импорт «дротик: конвертировать»;import 'package: adhara_socket_io / adhara_socket_io.dart';

    void main () => runApp (new MyApp ());

    const String URI = 'http://www.YourDomainOrIP.com:10511'; bool gbolSIOConnected= false;

    класс MyApp расширяет StatefulWidget {@override _MyAppState createState () => new _MyAppState ();}

    class _MyAppState расширяет State {List toPrint = ['пытается соединиться'];SocketIO socket;

    @ override void initState () {super.initState ();initSocket ();}

    initSocket () async {if (! GbolSIOConnected) {socket = await SocketIOManager (). CreateInstance (URI);} socket.onConnect ((data) {gbolSIOConnected = true; pprint ('onConnect'); // pprint (data); // sendMessage ();});socket.onConnectError ((data) {gbolSIOConnected = false; pprint ('onConnectError');});socket.onConnectTimeout ((data) {gbolSIOConnected = false; pprint ('onConnectTimeout');});socket.onError ((data) {gbolSIOConnected = false; pprint ('onError');});socket.onDisconnect ((data) {gbolSIOConnected = false; pprint ('onDisconnect');});socket.on ('news', (data) {pprint ('news'); pprint (data);});Socket.connect ();}

    sendMessage () {if (socket! = Null) {pprint ('отправка сообщения ...');socket.emit ('message', ['Hello world!', 1908, {'wonder': 'Woman', 'comincs': ['DC', 'Marvel']}]);socket.emit ('message', [{'wonder': 'Woman', 'comincs': ['DC', 'Marvel']}]);}}

    pprint (data) {setState (() {if (data - Map) {data = json.encode (data);} print (data); toPrint.add (data);});}

    @ переопределить сборку виджета (контекст BuildContext) {вернуть новый MaterialApp (home: новый Scaffold (appBar: новый AppBar (title: const Text) ('Пример приложения Plugin'),), тело: Column (crossAxisAlignment:CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [Expanded (child: Center (child: new Text (toPrint.join ('')),)), RaisedButton (child: Text ('Отправить сообщение'), onPressed:Отправить сообщение, ) ], ), ), );}}

  5. Включите ваш сервер node.js socket.io

  6. Запустите проект флаттера в Android Studio, вы должны увидеть:

    пытается подключиться

    onConnect

  7. Теперь Отключите ваш сервер node.js socket.io, вы должны увидеть:

    пытаетсяconnect

    onConnect

    onError

    onDisconnect

  8. Теперь снова включите сервер socket.io и выполните «горячую перезагрузку»В нескольких случаях вы можете обнаружить, что к серверу socket.io подключено НЕСКОЛЬКО КЛИЕНТОВ.

ОК, я не знаю, как избежать подключений с несколькими клиентами во времяГорячая перезагрузка, пожалуйста.помощь.

0 голосов
/ 11 ноября 2018

Я думаю, что вы ищете это flutter_socket_io

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...