#flutter #dart #websocket
#трепетать #дротик #websocket
Вопрос:
Я создал сервер веб-сокетов с Node.js для подключения двух приложений Flutter. Я могу отправить сообщение на сервер, но когда я слушаю его в веб-приложении, я получаю массив [79,101] вместо сообщения (Oi). Как я могу это решить?
Сообщение о потоке
void _sendMessage(data) { widget.channel.sink.add('Oi'); }
Конструктор потоков Cliente
StreamBuilder( stream: channel.stream, builder: (context, snapshot) { return Text(snapshot.hasData ? '${snapshot.data}' : 'Null'); }, )
Node.js Сервер
const WebSocket = require('ws'); // start the server and specify the port number const port = 8080; const wss = new WebSocket.Server({ port: port }); console.log(`[WebSocket] Starting WebSocket server on localhost:${port}`); wss.on('connection', (ws, request) =gt; { const clientIp = request.sock.remoteAddress; console.log(`[WebSocket] Client with IP ${clientIp} has connected`); ws.send('Connected!'); // Broadcast aka send messages to all connected clients ws.on('message', (message) =gt; { wss.clients.forEach((client) =gt; { if (client.readyState === WebSocket.OPEN) { client.send(message); } }) console.log(`[WebSocket] Message ${message} was received`); }); });
Комментарии:
1. что хранится в массиве «snapshot.data»?
2. когда я печатаю данные, возвращается [79, 105]
3. его переводят в Oi (utf8), но я просто не могу преобразовать снимок AsyncSnapshotlt;Объект?gt; в строку 🙁
Ответ №1:
Возможно, это не то решение, которое вы ищете, но я бы попытался преобразовать ответ с помощью String.fromCharCode
, так как ответ может быть символами ASCII, чтобы начать мой способ отладки.