3

パッケージ内のWebSocket クラスdart: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()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

実際、2番目の選択肢は最新のSDKで機能します。問題は、Socket.ioサービスに接続していて、HTTPハンドシェイクを実行していなかったことです。

于 2013-01-25T22:02:28.483 に答える