使用dart:io WebSocket和wss://协议(SSL)

时间:2013-01-24 08:04:23

标签: ssl websocket dart

我尝试使用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。

2 个答案:

答案 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文档中的StreamWebsocket

答案 1 :(得分:0)

实际上,第二种替代方案适用于最新的SDK。问题是我连接到Socket.io服务而我没有执行HTTP握手。