我看到有一个新版本的飞镖:io。如何使用新的v2 dart创建套接字服务器:IO侦听端口是否有新数据,并通过Web套接字将接收的数据推送到其订阅的客户端?
我有一个java和一个c#桌面应用程序(tcpClient),我想在特定端口上向我的dart服务器发送一个字符串(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
});
});
}
编辑:也许我应该将问题分成两部分。
如何在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);
答案 0 :(得分:2)
这是一个部分答案,它只涉及如何创建一个侦听客户端WebSocket连接的服务器。
你见过WebSocketTransformer类吗?
我还没有机会尝试这个 - 但我认为它是这样的:
HttpServer.bind(...).then((server) {
server.transform(new WebSocketTransformer()).listen((webSocket) => ... );
});
另请参阅Dart邮件列表中的this discussion。
答案 1 :(得分:0)
您可以编写一个桥接软件来转换来自TCP套接字的传入数据,并在必要时处理数据。然后通过打开的WebSocket连接发送/广播数据。
涉及阅读websocket spec的文件有点工作。然后编码。