Websocket 在发送()之前,如何确保可写标志为true?

Websocket 在发送()之前,如何确保可写标志为true?,websocket,dart,dart-async,Websocket,Dart,Dart Async,我正在为Dart WebSocket创建一个抽象层,它也与Socket.IO协议兼容,但它有一个我无法解决的问题 下面的代码将HttpRequest转换为WebSocket并将套接字实例保存在传输上。。。在这里,您可以看到我将writable标志的值更改为true,以通知套接字已打开 WebSocketTransformer.upgrade(req).then((socket) { this._socket = socket; this.writable = true; this.

我正在为Dart WebSocket创建一个抽象层,它也与Socket.IO协议兼容,但它有一个我无法解决的问题

下面的代码将HttpRequest转换为WebSocket并将套接字实例保存在传输上。。。在这里,您可以看到我将
writable
标志的值更改为true,以通知套接字已打开

WebSocketTransformer.upgrade(req).then((socket) {
  this._socket = socket;
  this.writable = true;

  this._socket.handleError(() {
    this.onClose();
  });

  // start listen the socket;
  socket.listen((packet) {
    this.onData(packet);
  });
}).catchError((Exception e) {
  this.onError('Can\'t conenct with the socket.', e.toString());
});
(可以找到完整的代码。)

当我首先调试代码时,调试器在该闭包内停止,然后才在此处停止,此时检查为make,但
可写
仍然为false:/

void flush([_]) {
  if (this._readyState != SocketStates.closed && this.transport.writable &&
      !this._writeBuffer.isEmpty) {
(可以找到完整的代码)
我真的需要帮助…

您的构造函数进行异步调用,但不返回未来(在构造函数中不可能)

使用返回
Future
的静态方法,或者使用
init
方法,在创建类后初始化类。
可能还有其他问题,但您的代码没有显示如何使用您的类,因此很难说

构造函数进行异步调用,但不返回未来(在构造函数中不可能)

使用返回
Future
的静态方法,或者使用
init
方法,在创建类后初始化类。
可能还有其他问题,但您的代码没有显示如何使用您的类,因此很难说

哦。。。很抱歉A错误删除所有使用代码的链接:/I更新帖子:)你已经试过我的建议了吗?这个问题是否仍然存在。你的例子太复杂了。从源头上看,我不知道什么会返回未来,什么会返回价值。你需要创建一个最小的例子,允许重现问题并将其添加到你的问题中。不。。。我来自葡萄牙,所以我现在醒来了…:D好的。。。我会试试你的建议。。。感谢您的帮助:)我在升级请求后创建了一个新的发射器,该发射器通知传输的打开(
this.emit(
)。。。在服务器类上,当我收到
open事件时,我只是启动套接字(
this.once('open',(){//start the Socket});
)我不确定如何处理此注释。你接受了我的答案,所以我认为你的问题现在已经解决了。哦。。。很抱歉A错误删除所有使用代码的链接:/I更新帖子:)你已经试过我的建议了吗?这个问题是否仍然存在。你的例子太复杂了。从源头上看,我不知道什么会返回未来,什么会返回价值。你需要创建一个最小的例子,允许重现问题并将其添加到你的问题中。不。。。我来自葡萄牙,所以我现在醒来了…:D好的。。。我会试试你的建议。。。感谢您的帮助:)我在升级请求后创建了一个新的发射器,该发射器通知传输的打开(
this.emit(
)。。。在服务器类上,当我收到
open事件时,我只是启动套接字(
this.once('open',(){//start the Socket});
)我不确定如何处理此注释。你接受了我的回答,因此我认为你的问题现在已经解决了。
WebSocketTransformer.upgrade(req).then