Я уже давно работаю на сервере C# websocket, и была одна проблема, которую я работал, но никогда не разрешал и не обнаружил правильной причины его существования. Я замечаю, что происходит только тогда, когда браузер работает под Windows XP. После завершения рукопожатия WebSocket браузер/клиент не может отправлять данные на сервер, если сообщение не отправлено с сервера на клиент сначала. Я также тестировал с другими кадрами, если сервер отправляет сообщение, клиент будет продолжаться как нормально. Если клиент пытается отправить сообщение, оно может подождать бесконечно. Как только сервер отправляет сообщение клиенту, клиент продолжается. < /P>
Теперь я подумал, что я делаю что -то неправильно на своем сервере WebSocket, но если это было так, то почему все будет работать, как и ожидалось, когда браузер работает под Windows 7. Мне не нужно отправлять сообщение на клиент до того, как клиент будет выпустить Server Server. Никогда не завершайте, если Chrome подключается с машины XP; < /p>
byte[] textPound = {0x81, 0x01, 0x23};
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 56100);
server.Bind(ip);
server.Listen(100);
byte[] buffer = new byte[1000];
Socket client = server.Accept();
int rec = client.Receive(buffer);
Handshake(buffer, ref rec);//custom function returns the handshake to the buffer
client.Send(buffer, rec, SocketFlags.None);
//client.Send(textPound);
rec = client.Receive(b);
client.Close();
< /code>
до тех пор, пока .send () комментируется. receive () никогда не завершится, если Chrome будет выполнен с машины XP, независимо от того, как вы отправляете сообщение из браузера. Если бы вы запустили поток до .receive (), который выпустил бы .send () после x количество времени, процесс завершается, как только это произойдет.
кто -нибудь испытал это или знает, почему это может быть? Документация
Документация API
Подробнее здесь: https://stackoverflow.com/questions/169 ... s-received
Клиент WebSocket не может отправить после рукопожатия, если не будет получено другое сообщение ⇐ C#
Место общения программистов C#
1752174338
Anonymous
Я уже давно работаю на сервере C# websocket, и была одна проблема, которую я работал, но никогда не разрешал и не обнаружил правильной причины его существования. Я замечаю, что происходит только тогда, когда браузер работает под Windows XP. После завершения рукопожатия WebSocket браузер/клиент не может отправлять данные на сервер, если сообщение не отправлено с сервера на клиент сначала. Я также тестировал с другими кадрами, если сервер отправляет сообщение, клиент будет продолжаться как нормально. Если клиент пытается отправить сообщение, оно может подождать бесконечно. Как только сервер отправляет сообщение клиенту, клиент продолжается. < /P>
Теперь я подумал, что я делаю что -то неправильно на своем сервере WebSocket, но если это было так, то почему все будет работать, как и ожидалось, когда браузер работает под Windows 7. Мне не нужно отправлять сообщение на клиент до того, как клиент будет выпустить Server Server. Никогда не завершайте, если Chrome подключается с машины XP; < /p>
byte[] textPound = {0x81, 0x01, 0x23};
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 56100);
server.Bind(ip);
server.Listen(100);
byte[] buffer = new byte[1000];
Socket client = server.Accept();
int rec = client.Receive(buffer);
Handshake(buffer, ref rec);//custom function returns the handshake to the buffer
client.Send(buffer, rec, SocketFlags.None);
//client.Send(textPound);
rec = client.Receive(b);
client.Close();
< /code>
до тех пор, пока .send () комментируется. receive () никогда не завершится, если Chrome будет выполнен с машины XP, независимо от того, как вы отправляете сообщение из браузера. Если бы вы запустили поток до .receive (), который выпустил бы .send () после x количество времени, процесс завершается, как только это произойдет.
кто -нибудь испытал это или знает, почему это может быть? Документация
Документация API
Подробнее здесь: [url]https://stackoverflow.com/questions/16971012/websocket-client-cannot-send-after-handshake-unless-another-message-is-received[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия