3

我尝试使用包中的WebSocketdart:io连接到 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。

4

2 回答 2

2

我假设你是最新版本的 Dart。如果您不是,我建议您更新。

您正在调用的某些方法 -返回对象conn.onMessage(),您需要使用 a来访问(“收听”)流。这是语法: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 文档中的StreamWebsocket

于 2013-01-25T21:52:38.980 回答
0

实际上,第二种选择适用于最新的 SDK。问题是我正在连接到 Socket.io 服务并且我没有执行 HTTP 握手。

于 2013-01-25T22:02:28.483 回答