Связь через WebSocket во Flutter с использованием web_socket_channel: подробное руководство

“web_socket_channel флаттер”

Связь через WebSocket широко используется в современных веб- и мобильных приложениях для установления двунаправленной связи в реальном времени между клиентом и сервером. Во Flutter, платформе пользовательского интерфейса с открытым исходным кодом для создания мобильных, веб- и настольных приложений, пакет web_socket_channelпредоставляет удобный способ реализации связи через WebSocket. В этой статье блога мы рассмотрим различные методы использования пакета web_socket_channelво Flutter, а также приведем примеры кода.

  1. Импорт пакета:
    Чтобы начать, добавьте пакет web_socket_channelв файл pubspec.yamlи импортируйте его в файл Dart:
import 'package:web_socket_channel/web_socket_channel.dart';
  1. Создание соединения WebSocket:
    Чтобы установить соединение WebSocket, вам необходимо создать экземпляр класса WebSocketChannel. Это можно сделать с помощью класса IOWebSocketChannelили HtmlWebSocketChannel, в зависимости от целевой платформы. Вот пример создания канала WebSocket для локального сервера WebSocket:
final channel = IOWebSocketChannel.connect('ws://localhost:8080');
  1. Отправка и получение сообщений.
    Как только соединение будет установлено, вы сможете отправлять и получать сообщения с помощью WebSocketChannel. Чтобы отправить сообщение, используйте свойство sinkканала:
channel.sink.add('Hello from Flutter!');

Чтобы прослушивать входящие сообщения, используйте свойство streamканала:

channel.stream.listen((message) {
  print('Received: $message');
});
  1. Закрытие соединения.
    Если вам больше не нужно соединение WebSocket, важно правильно закрыть его, чтобы освободить системные ресурсы. Закрыть соединение можно методом WebSocketChannel.close():
channel.sink.close();
  1. Обработка ошибок.
    Соединения WebSocket могут вызывать ошибки, например сбои соединения или проблемы на стороне сервера. Вы можете обрабатывать эти ошибки, прослушивая свойство streamобъекта WebSocketChannelна предмет событий ошибок:
channel.stream.handleError((error) {
  print('Error: $error');
});

Реализуя эти методы, вы можете использовать пакет web_socket_channelво Flutter для обеспечения связи в реальном времени в ваших приложениях.