2

dart:io の新しいバージョンがあることを確認しました。新しいデータのポートをリッスンし、受信したデータを Web ソケット経由でサブスクライブしているクライアントにプッシュする、新しい v2 dart:IO を使用してソケット サーバーを作成するにはどうすればよいですか?

Java および ac# デスクトップ アプリケーション (tcpClient) があり、特定のポートでダーツ サーバーに文字列 (json または xml) を送信したいと考えています。その文字列は私の tcpClient に返信され、Web ソケットを使用して他のすべてのサブスクライブされたクライアント (ブラウザー) にプッシュされる必要があります。

次のものがありますが、その特定のソケットに送信されたデータにアクセスするにはどうすればよいですか?

import 'dart:io';

main() {ServerSocket.bind("127.0.0.1", 5555).then((ServerSocket socket) {
  socket.listen((Socket clientSocket) {

    //how to access data (String) that was 
    //send to the socket from my desktop application
  });
});
}

編集:質問を2つの部分に分割する必要があるかもしれません。

特定のポートでデータをリッスンするサーバーを Dart で作成するには?

node.js では、次のようなものを使用できます。

var net = require('net');

var HOST = '127.0.0.1';
var PORT = 6969;

// Create a server instance, and chain the listen function to it
// The function passed to net.createServer() becomes the event handler for the 'connection' event
// The sock object the callback function receives UNIQUE for each connection
net.createServer(function(sock) {

    // We have a connection - a socket object is assigned to the connection automatically
    console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort);

    // Add a 'data' event handler to this instance of socket
    sock.on('data', function(data) {

        console.log('DATA ' + sock.remoteAddress + ': ' + data);
        // Write the data back to the socket, the client will receive it as data from the server
        sock.write('You said "' + data + '"');

    });

    // Add a 'close' event handler to this instance of socket
    sock.on('close', function(data) {
        console.log('CLOSED: ' + sock.remoteAddress +' '+ sock.remotePort);
    });

}).listen(PORT, HOST);

console.log('Server listening on ' + HOST +':'+ PORT);
4

2 に答える 2

2

これは部分的な答えであり、クライアントのWebSocket接続をリッスンするサーバーを作成する方法のみを扱います。

WebSocketTransformerクラスを見たことがありますか?

WebSocketTransformer

私はまだこれを試す機会がありませんでした-しかし、私はそれがこのようなものだと思います:

HttpServer.bind(...).then((server) {
     server.transform(new WebSocketTransformer()).listen((webSocket) => ... );
});

Dartメーリングリストのこのディスカッションも参照してください。

于 2013-03-14T01:09:31.323 に答える
0

TCP ソケットからの着信データを変換し、必要に応じてデータを処理するブリッジング ソフトウェアを作成できます。次に、開いている WebSocket 接続を介してデータを送信/ブロードキャストします。

websocket specのドキュメントを読むのはちょっとした作業です。そして、それをコーディングします。

于 2013-03-14T01:57:43.137 に答える