web_socket_channel 抛出不支持的操作:Platform._version
web_socket_channel throwing Unsupported operation: Platform._version
如何在 dart web 中使用 websocket 包?我有以下代码
import 'package:projectname/data/chat/chat_message.dart';
import 'package:projectname/data/chat/chat_provider.dart';
import 'package:web_socket_channel/io.dart';
import '../path.dart';
class MockChatProvider implements ChatProvider {
@override
IOWebSocketChannel connect() {
return IOWebSocketChannel.connect(Uri.parse(Path.joinChat));
}
@override
sendChatMessage(IOWebSocketChannel channel, ChatMessage message) {
channel.sink.add(message.toJson());
}
}
但是当我尝试连接时出现以下错误
Unsupported operation: Platform._version
这个包确实说它支持网络。我做错了什么?
我认为问题在于您正在为网络导入 package:web_socket_channel/io.dart
,您应该导入 package:web_socket_channel/web_socket_channel.dart
.
软件包回购的相关 GitHub 问题:https://github.com/dart-lang/web_socket_channel/issues/159
只需使用包 package:web_socket_channel/web_socket_channel.dart
TLDR;
我认为你应该使用这个...
import 'package:web_socket_channel/web_socket_channel.dart';
...而不是...
import 'package:web_socket_channel/io.dart';
并将其用作
WebSocketChannel connect() {
...
return WebSocketChannel.connect(Uri.parse(Path.joinChat));
...
sendChatMessage(WebSocketChannel channel, ChatMessage message) {
注意:我没试过!
我认为问题是您找到了正确的包,但是您直接使用 IOWebSocketChannel
。这仅适用于 dart:io
可用的地方。该软件包中还有另一个 class,HtmlWebSocketChannel
只能在网络上使用。
如何在 dart web 中使用 websocket 包?我有以下代码
import 'package:projectname/data/chat/chat_message.dart';
import 'package:projectname/data/chat/chat_provider.dart';
import 'package:web_socket_channel/io.dart';
import '../path.dart';
class MockChatProvider implements ChatProvider {
@override
IOWebSocketChannel connect() {
return IOWebSocketChannel.connect(Uri.parse(Path.joinChat));
}
@override
sendChatMessage(IOWebSocketChannel channel, ChatMessage message) {
channel.sink.add(message.toJson());
}
}
但是当我尝试连接时出现以下错误
Unsupported operation: Platform._version
这个包确实说它支持网络。我做错了什么?
我认为问题在于您正在为网络导入 package:web_socket_channel/io.dart
,您应该导入 package:web_socket_channel/web_socket_channel.dart
.
软件包回购的相关 GitHub 问题:https://github.com/dart-lang/web_socket_channel/issues/159
只需使用包 package:web_socket_channel/web_socket_channel.dart
TLDR;
我认为你应该使用这个...
import 'package:web_socket_channel/web_socket_channel.dart';
...而不是...
import 'package:web_socket_channel/io.dart';
并将其用作
WebSocketChannel connect() {
...
return WebSocketChannel.connect(Uri.parse(Path.joinChat));
...
sendChatMessage(WebSocketChannel channel, ChatMessage message) {
注意:我没试过!
我认为问题是您找到了正确的包,但是您直接使用 IOWebSocketChannel
。这仅适用于 dart:io
可用的地方。该软件包中还有另一个 class,HtmlWebSocketChannel
只能在网络上使用。