Согласно протоколу веб-сокета после первоначального рукопожатия первый бит в любом пакете веб-сокета должен быть равен 0, если у него есть другие пакеты данных, которые следует отслеживать, или 1, если он завершен.
Однако у меня возникают проблемы при отправке сообщение на мой сервер websocket от клиента dart.
Я отправляю только простое сообщение, содержащее «yo».
Иногда сообщение отправляется и обрабатывается успешно, но в большинстве случаев сообщение разбито на 2 пакета. Это не должно быть проблемой, но либо пакеты отправляются, и оба пакета содержат 1 в качестве первого бита. Или они отправляются в неправильном порядке: первый бит в первом пакете установлен в единицу, а первый бит во втором пакете установлен в ноль.
Сервер отлично отвечает при использовании клиентов websocket в chrome, firefox, mozilla и даже IE.
Я не уверен, делаю ли я очевидную ошибку, но я не знаю, как получить
import 'dart:convert';
import 'dart:io';
import 'dart:core';
void main() {
var url = 'ws://localhost:8080';
var quit = false;
var input= null;
WebSocket.connect(url, protocols: ['chat'])
.then((WebSocket w) {
if (w.readyState == WebSocket.open) {
print("Connected");
while (!quit) {
print("Please enter a command");
input = stdin.readLineSync(
encoding: Encoding.getByName("utf-8"));
if (input == "quit") {
quit = true;
print("quitting program.... \nbye bye\n");
exit(0);
}
if (input == "close") {
w.close();
} else {
w.add(input);
}
}
}
}).catchError((error) {
print(error.toString());
});
}
Вывод с сервера показывает два пакета, но второй пакет должен быть тем, который был отправлен первым
Это работает во всех основных браузерах, поэтому я не могу понять, что не так с клиентом Dart.
Любая помощь приветствуется.
Заранее спасибо