flutter - WebSocketChannelException:SocketException:操作系统错误:操作超时,errno = 60,地址 = echo.websocket.org,端口 = 52365
问题描述
Websocket 颤振不起作用。我尝试连接 websocket,但我不能。我将文档中的代码与 wss://echo.websocket.org 一起使用,但我收到错误"WebSocketChannelException: SocketException: OS Error: Operation timed out, errno = 60, address = echo.websocket.org, port = 52365"
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
const title = 'WebSocket Demo';
return const MaterialApp(
title: title,
home: MyHomePage(
title: title,
),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({
Key? key,
required this.title,
}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final TextEditingController _controller = TextEditingController();
final _channel = WebSocketChannel.connect(
Uri.parse('wss://echo.websocket.org'),
);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Form(
child: TextFormField(
controller: _controller,
decoration: const InputDecoration(labelText: 'Send a message'),
),
),
const SizedBox(height: 24),
StreamBuilder(
stream: _channel.stream,
builder: (context, snapshot) {
return Text(snapshot.hasData ? '${snapshot.data}' : '');
},
)
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _sendMessage,
tooltip: 'Send message',
child: const Icon(Icons.send),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
void _sendMessage() {
if (_controller.text.isNotEmpty) {
_channel.sink.add(_controller.text);
}
}
@override
void dispose() {
_channel.sink.close();
super.dispose();
}
}
[✓] Flutter(Channel stable, 2.2.2, on macOS 11.3.1 20E241 darwin-arm, locale ru-UA) • Flutter 版本 2.2.2 位于 /Users/vadimgerman/Developer/flutter • 框架修订版 d79295af24(3 个月前), 2021-06-11 08:56:01 -0700 • 引擎版本 91c9fc8fe0 • Dart 版本 2.13.3
[✓] Android 工具链 - 为 Android 设备开发(Android SDK 版本 30.0.3) • Android SDK 位于 /Users/vadimgerman/Library/Android/sdk • 平台 android-30,构建工具 30.0.3 • Java 二进制位于:/ Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java 版本 OpenJDK 运行时环境(内部版本 11.0.8+10-b944.6916264) • 接受所有 Android 许可证。
[✓] Xcode - 为 iOS 和 macOS 开发 • Xcode 位于 /Applications/Xcode.app/Contents/Developer • Xcode 12.5,构建版本 12E262 • CocoaPods 版本 1.10.1
[✓] Chrome - 为网络开发 • Chrome 位于 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio(4.2 版) • Android Studio 位于 /Applications/Android Studio.app/Contents • Flutter 插件可以从以下位置安装: https ://plugins.jetbrains.com/plugin/9212-flutter • Dart 插件可以是安装自: https : //plugins.jetbrains.com/plugin/6351-dart • Java 版本 OpenJDK 运行时环境(内部版本 11.0.8+10-b944.6916264)
[✓] 连接设备(2 个可用) • iPhone 11(移动) • FDEB8FB5-0583-4C46-811B-E2CD8325EA8A • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-5(模拟器) • Chrome(网络) • chrome • web-javascript • Google Chrome 93.0.4577.63
• 未发现任何问题!
解决方案
推荐阅读
- amazon-web-services - 如何从 EC2 快照创建 AWS Lightsail 实例?
- android - 使用 Flowable/Observable 时从房间 @Query 生成的代码不正确
- mysql - MySQL中如何正确使用“IS”和“=”
- java - 我将如何移动我的按钮,以便它们以水平方式显示在我的标题下方?
- php - 如何在 PCRE 正则表达式中匹配不包含特定前缀的 URL
- c - 使用strlen和完整数组不打印的数组长度不同?
- ios - 如何在 iOS 上的 Metal 中使用 OpenCV 函数?
- javascript - 从模板字符串呈现空白
- c++ - 如何在 Xcode 中为 Macron 字符修复截断的语法突出显示
- c# - 将月份数转换为字符串时出错:无法识别方法“System.String ToString(Int32)”