我正在为Dart WebSocket创建一个抽象层,它也与Socket协议兼容。但是它有一个我解决不了的问题。
下面的代码将HttpRequest转换为WebSocket,并将socket实例保存在Transport…在这里,您可以看到我将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());
});
(完整的代码可以在这里找到)
当我首先调试代码时,调试器停止在闭包内,然后停止在这里,检查是做的,但writable
仍然为假:/
void flush([_]) {
if (this._readyState != SocketStates.closed && this.transport.writable &&
!this._writeBuffer.isEmpty) {
(完整的代码可以在这里找到)我真的需要帮助…
您的构造函数进行异步调用,但不返回future(在构造函数中不可能)
WebSocketTransformer.upgrade(req).then
使用静态方法代替返回Future<WebSocketTransformer>
或使用init
方法,在创建后初始化类。可能还有其他问题,但是你的代码没有显示你如何使用你的类,因此很难判断。