【问题标题】:Echo WebSocket in DartDart 中的 Echo WebSocket
【发布时间】:2019-03-05 22:13:14
【问题描述】:

我正在尝试在 Dart 中创建一个“回声”WebSocket,但在网上我只能找到过时的示例。

这是我目前的代码:

服务器:

import 'dart:io';
import 'dart:convert';

void main() async {
  final serverSocket = await ServerSocket.bind('127.0.0.1', 5600);
  await for (Socket socket in serverSocket) {
    socket.transform(utf8.decoder).listen((data) {
      print(data);
    });
  }
}

客户:

import 'dart:html';

WebSocket socket;
bool open = false;

void main() {
  querySelector('#sendHello').onClick.listen(onClick);
  querySelector('#output').text = 'Your Dart app is running.';

  socket = WebSocket('ws://localhost:5600');
  socket.onMessage.listen(socketMessage);
  socket.onOpen.listen((_) => open = true);
}

void socketMessage(MessageEvent event){
  print('I recived: ${event.data}');
}

void onClick(MouseEvent event) {
  if (!open)
    print('Connection is not open!');
  else
    socket.send('Hello');
}

打印的第一个文本是:

GET / HTTP/1.1
Host: localhost:5600
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Upgrade: websocket
Origin: http://localhost:63572
Sec-WebSocket-Version: 13
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,it;q=0.8,lb;q=0.7
Cookie: ....
Sec-WebSocket-Key: ...
Sec-WebSocket-Extensions: ...

那么我无法再发送/接收任何数据包了。

如何让ServerSocket 正常工作?

【问题讨论】:

    标签: sockets websocket dart


    【解决方案1】:

    我设法做到了,实际上我完全走错了路,这是实际的方法:

    import 'dart:io';
    
    void main() async {
      HttpServer server = await HttpServer.bind('localhost', 5600);
      server.transform(WebSocketTransformer()).listen(onWebSocketData);
    }
    
    void onWebSocketData(WebSocket client){
      client.listen((data) {
        client.add('Echo: $data');
      });
    }
    

    【讨论】:

    • 感谢您发布此消息!它非常有帮助,因为在 Dart 中服务器使用 websocket 与客户端使用相比,没有那么多的在线文档。
    猜你喜欢
    • 2023-04-03
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多