Я попытался подключить флаттер к разъему 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