首页 > 解决方案 > 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

• 未发现任何问题!

标签: flutterwebsocketflutter-dependencies

解决方案


推荐阅读