не может соединить флаттер с сокетом, чтобы выразить - PullRequest
0 голосов
/ 25 октября 2019

Я попытался подключить флаттер к разъему Express js, но он либо отказал в соединении, либо не дал никакой реакции.

Я понял этот пример по тензорному принципу, но он не выдает никакой ошибки при перезагрузке,Он говорит мне, что пакет dart: html отсутствует. он работает с эхом websocket.io , но не с моим бэкэндом

Вот код флаттера

 import 'package:web_socket_channel/io.dart';
 import 'package:flutter/material.dart';
 import 'package:web_socket_channel/io.dart';
 import 'package:web_socket_channel/web_socket_channel.dart';

 void main()  {
   runApp(MyApp());
 }

 class MyApp extends StatelessWidget {

   @override
   Widget build(BuildContext context) {
     return MaterialApp(
       title: 'Flutter Demo',
       theme: ThemeData(
         primarySwatch: Colors.blue,
       ),
       home: MyHomePage(title: 'Flutter Demo Home Page'),
     );
   }
 }

 class MyHomePage extends StatefulWidget {
   MyHomePage({Key key, this.title}) : super(key: key);

   final String title;

   @override
   _MyHomePageState createState() => _MyHomePageState();
 }

 class _MyHomePageState extends State<MyHomePage> {
   int _counter = 0;
   WebSocketChannel channel;

   @override
   void initState() {
     super.initState();
     channel = IOWebSocketChannel.connect("ws://mighty-peak-62403.herokuapp.com");
   }

   @override
   void dispose() {
     // TODO: implement dispose
     channel.sink.close();
     super.dispose();
   }

   void _incrementCounter() {
     channel.sink.add("hello world");
   }

   @override
   Widget build(BuildContext context) {
     return Scaffold(
       appBar: AppBar(
         title: Text(widget.title),
       ),
       body: Center(
         child: StreamBuilder(
           stream: channel.stream,
           builder: (context, snapShot) =>
               snapShot.hasData ? Text(snapShot.data) : Text("doenst work"),
         ),
       ),
       floatingActionButton: FloatingActionButton(
         onPressed: _incrementCounter,
         tooltip: 'Increment',
         child: Icon(Icons.add),
       ),
     );
   }
 }

и вот бэкэнд


    const app = require('express')();
    const server = require('http').Server(app);
    const io = require('socket.io')(server);
    const port = process.env.PORT || 5000

    app.get('/', function(req, res) {
       res.status(200).send("w");
    });

    io.on('connection', (socket) => {
      console.log(`Client SocketID: ${socket.id}.`);
      socket.emit('sayHello', {Hello: 'world!'});
      socket.on('sayHello', (greeting) => {
        console.log(`Hello, ${greeting['Hello']}`);
      });
    });

    server.listen(port,()=>console.log("listening"));

это ошибка, которую я получаю из логов на heroku-app

2019-10-24T23: 25: 39.593874 + 00: 00 heroku [router]: at = errorcode = H13 desc = «Соединение закрыто без ответа» метод = GET path = "/" host = mighty-peak-62403.herokuap p.com request_id = f9960a12-6f2a-4e6c-9810-fea27d521d51 fwd = "156.219.177.165"dyno = web.1 connect = 0ms service = 1004ms status = 503 bytes = 0 protocol = http

Я ожидал, что приложение heroku выдаст мне журнал, который я реализовал, когда приложение флаттера подключено к экспрессу,однако я получаю соединение с ошибкой H13

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