我尝试使用dart:io
包中的WebSocket class连接到SSL WebSocket服务。这似乎不起作用。目前不支持wss://
协议,还是我遗漏了一些东西。以下是使用的代码:
var ws = new WebSocket('wss://...');
ws.onopen = () {
print('open');
};
ws.onmessage = (e) {
print(e.data);
};
我也尝试了替代API:
var client = new HttpClient(),
conn = new WebSocketClientConnection(client.getUrl(new Uri.fromString('https://...')));
conn.onMessage = (msg) {
print(msg);
};
conn.onOpen = () {
print('open');
};
这似乎也不起作用,我得到的错误如下:
1006 HttpParserException:连接在完全响应之前关闭 收到标头1006 HttpParserException:无效的请求方法
我正在使用最新的SDK。
答案 0 :(得分:1)
我假设您是Dart的最新版本。如果你不是,我会建议更新。
您要调用的一些方法 - conn.onMessage()
,conn.onOpen()
返回Stream
个对象,您需要使用.listen()
来访问('收听')流。这是语法:
import 'dart:html';
void main() {
var wss = new WebSocket('wss://echo.websocket.org');
wss.onOpen.listen((item) {
wss.send("hello world");
});
wss.onMessage.listen((message) {
print(message.data);
});
}
等
你能试试吗?有关详细信息,请参阅api文档中的Stream和Websocket。答案 1 :(得分:0)
实际上,第二种替代方案适用于最新的SDK。问题是我连接到Socket.io服务而我没有执行HTTP握手。