Как я могу использовать розетки с Flutter Web - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь установить соединение между сервером сокетов, записанным в Python, используя socketio, к клиенту, созданному с помощью Flutter Web.

Я протестировал различные пакеты сокетов, такие как adhara_socket_io и flutter_socket_io и ничего не получалось. Я попробовал те же фрагменты кода на Android, и они тоже не сработали.

Я продолжил поиск и нашел этот фрагмент кода. Он использует класс Socket из пакета dart.io.

Socket socket = await Socket.connect('192.168.2.190', 7003);

    print('connected');

    // listen to the received data event stream
    socket.listen((List<int> event) {
      print(utf8.decode(event));
    });

    // send hello
    socket.add(utf8.encode('hello'));

    // wait 5 seconds
    await Future.delayed(Duration(seconds: 5));

    // .. and close the socket
    socket.close();

Этот подключен к серверу Python и отправил данные с Android, но когда я тестировал их из Интернета, я не сделал t connect.

Есть ли что-то еще, что мне нужно добавить, чтобы оно работало в Интернете?

Или, в худшем случае, есть ли другой способ сделать то, что я хочу, мой Цель состоит в том, чтобы показать видео на веб-сайте. Видео на самом деле представляет собой набор изображений, взятых из Python, на них будет выполнено некоторое машинное обучение, и я хочу отправить их через сокет, и каждое изображение отображается, как только оно получено, поэтому оно выглядит как видео подача. (То же самое было сделано с помощью React)

1 Ответ

1 голос
/ 17 февраля 2020

dart.io пакет не совместим с флаттером. И я полагаю, как предположил pskink, websockets - это путь к go. Вы можете использовать HtmlWebSocketChannel из пакета web_socket_channel , как описано здесь . Я использовал этот пакет и могу подтвердить, что он хорошо работает в флаттере.

В вашем случае следует использовать что-то следующее.

var channel = HtmlWebSocketChannel.connect("ws://192.168.2.190:7003");

Но учтите, что это не совместимо с обычное флаттер приложение. Если вы нацелены как на android, так и на трепетную сеть, то вам следует обработать создание этого канала условно в зависимости от цели, для которой вы его строите, и выбрать между HtmlWebSocketChannel или IOWebSocketChannel для создания соединения. Если вы заинтересованы, вы можете использовать условную реализацию на основе заглушки, как предложено в этом посте *.

* Примечание: это мой пост. :)

...