gpt4 book ai didi

websocket - 使用 Dart WebSocket 服务器支持 WebSocket 关闭原因

转载 作者:行者123 更新时间:2023-12-03 08:07:11 29 4
gpt4 key购买 nike

我正在使用 Dart 的 WebSocket 类(dart:io 和 dart:html 版本)连接到 Dart WebSocket 服务器。当我让客户端使用自定义关闭代码和原因关闭 Web 套接字连接时,自定义代码设置正确,但自定义关闭原因不是。

这是一个简化的测试用例:

server.dart

library server;

import 'dart:io';

main() async {
HttpServer server = await HttpServer.bind('localhost', 8081);
server
.transform(new WebSocketTransformer())
.listen((WebSocket webSocket) {
print('WebSocket opened.');
webSocket.listen((_) {}, onDone: () {
print('WebSocket closed.');
});
});
print('Listening..');
}

test.dart
library test;

import 'dart:io';

main() async {
WebSocket webSocket1 = await WebSocket.connect('ws://localhost:8081');
webSocket1.listen((_) {}, onDone: () {
print('Local Dart ws connection: closed with\n\t' +
'code: ${webSocket1.closeCode}\n\t' +
'reason: ${webSocket1.closeReason}');
});
webSocket1.close(4001, 'Custom close reason.');

WebSocket webSocket2 = await WebSocket.connect('ws://echo.websocket.org');
webSocket2.listen((_) {}, onDone: () {
print('echo.websocket.org connection: closed with\n\t' +
'code: ${webSocket2.closeCode}\n\t' +
'reason: ${webSocket2.closeReason}');
});
webSocket2.close(4001, 'Custom close reason.');
}

标准输出
Local Dart ws connection: closed with
code: 4001
reason:
echo.websocket.org connection: closed with
code: 4001
reason: Custom close reason.

第一个 Web 套接字(连接到本地 Dart 服务器的套接字)连接并关闭,但缺少关闭原因(空白字符串)。第二个 web socket(连接到 echo.websocket.org 的那个)连接并关闭,并且关闭代码和原因都设置正确。

客户端连接的方式不会有问题,因为在这两种情况下都是相同的。那么这是我设置 Dart WebSocket 的方式的问题吗?还是 WebSocketTransformer/WebSocket 类中的错误?

最佳答案

这已通过添加到 dart-lang/sdk 中得到解决:https://github.com/dart-lang/sdk/issues/23964

关于websocket - 使用 Dart WebSocket 服务器支持 WebSocket 关闭原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434394/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com