Изобразите сервер на питоне, его проще на стороне запустить, чем кого-то сишарп с его Студией затестить сподвигнуть.
а сервер и клиент на шарпе на одной машине запускали или на разных?
Из лога видно, что пропуски идут по каждому второму пакету, явные сетевые тормоза но, но может быть не только
При чем тут студия, если сервер - обычный екзешник на шарпе?
Все на одной. Нет возможности на разных запускать.
Так там же delay(2000) везде стоит.
webSocket.setReconnectInterval(1000);
других не видел, на одной машине сеть вообще не используется, коммуницируют через local, для начала разнестите клиента и сервер на шарпе на разные машины, зачем делеи в коде не понял
Какой нормальный человек будет чужой экзешник у себя в сети запускать? Питон - пожалста, запущу.
Я имела в виду рабочую сеть.
А где сообщение, что происходит дисконнект? Вижу только повторный коннект. У меня esp передаёт в браузер инфу, в программе есть счётчик подключений. Так вот, этот счётчик переодически увеличивается, как будто новое подключение произошло. У меня это, скорее всего, из за нестабильного wifi канала. Но переподключение всегда срабатывает.
Вывод в Arduino IDE
13:12:12.055 → [WSc] Connected to webSocket
13:12:14.060 → [WSc] get text: Event
13:12:16.073 → [WSc] get text: Event
13:12:18.080 → [WSc] get text: Event
13:12:20.094 → [WSc] get text: Event
13:12:22.098 → [WSc] get text: Event
13:12:24.102 → [WSc] get text: Event
13:12:26.065 → [WSc] get text: Event
13:12:28.076 → [WSc] get text: Event
13:12:30.080 → [WSc] get text: Event
13:12:32.088 → [WSc] get text: Event
13:12:34.096 → [WSc] get text: Event
13:12:36.080 → [WSc] get text: Event
13:12:38.085 → [WSc] get text: Event
13:12:40.093 → [WSc] get text: Event
13:12:42.096 → [WSc] get text: Event
13:12:44.104 → [WSc] get text: Event
13:12:46.113 → [WSc] get text: Event
13:12:48.118 → [WSc] get text: Event
13:12:50.128 → [WSc] get text: Event
13:12:52.097 → [WSc] get text: Event
13:12:54.125 → [WSc] get text: Event
13:12:56.123 → [WSc] get text: Event
13:12:58.128 → [WSc] get text: Event
13:13:00.139 → [WSc] get text: Event
13:13:02.107 → [WSc] get text: Event
13:13:04.123 → [WSc] get text: Event
13:13:06.141 → [WSc] get text: Event
13:13:08.145 → [WSc] get text: Event
13:13:10.110 → Socket Disconnected!
13:13:12.165 → [WSc] Connected to webSocket
13:13:14.127 → [WSc] get text: Event
13:13:16.165 → [WSc] get text: Event
13:13:18.169 → [WSc] get text: Event
13:13:20.177 → [WSc] get text: Event
13:13:22.140 → [WSc] get text: Event
13:13:24.145 → [WSc] get text: Event
13:13:26.169 → [WSc] get text: Event
13:13:28.180 → [WSc] get text: Event
13:13:30.141 → [WSc] get text: Event
13:13:32.147 → [WSc] get text: Event
13:13:34.162 → [WSc] get text: Event
13:13:36.169 → [WSc] get text: Event
13:13:38.175 → [WSc] get text: Event
13:13:40.176 → [WSc] get text: Event
13:13:42.183 → [WSc] get text: Event
13:13:44.189 → [WSc] get text: Event
13:13:46.202 → [WSc] get text: Event
13:13:48.200 → [WSc] get text: Event
13:13:50.166 → [WSc] get text: Event
13:13:52.176 → [WSc] get text: Event
13:13:54.185 → [WSc] get text: Event
13:13:56.196 → [WSc] get text: Event
13:13:58.202 → [WSc] get text: Event
13:14:00.176 → [WSc] get text: Event
13:14:02.191 → [WSc] get text: Event
13:14:04.203 → [WSc] get text: Event
13:14:06.212 → [WSc] get text: Event
13:14:08.222 → [WSc] get text: Event
13:14:10.184 → Socket Disconnected!
13:14:12.229 → [WSc] Connected to webSocket
13:14:14.238 → [WSc] get text: Event
13:14:16.205 → [WSc] get text: Event
13:14:18.213 → [WSc] get text: Event
13:14:20.229 → [WSc] get text: Event
13:14:22.247 → [WSc] get text: Event
13:14:24.256 → [WSc] get text: Event
13:14:26.218 → [WSc] get text: Event
13:14:28.229 → [WSc] get text: Event
13:14:30.228 → [WSc] get text: Event
13:14:32.236 → [WSc] get text: Event
13:14:34.236 → [WSc] get text: Event
13:14:36.247 → [WSc] get text: Event
13:14:38.257 → [WSc] get text: Event
13:14:40.266 → [WSc] get text: Event
13:14:42.274 → [WSc] get text: Event
13:14:44.252 → [WSc] get text: Event
13:14:46.258 → [WSc] get text: Event
13:14:48.252 → [WSc] get text: Event
13:14:50.260 → [WSc] get text: Event
13:14:52.269 → [WSc] get text: Event
13:14:54.279 → [WSc] get text: Event
13:14:56.246 → [WSc] get text: Event
13:14:58.253 → [WSc] get text: Event
13:15:00.262 → [WSc] get text: Event
13:15:02.257 → [WSc] get text: Event
13:15:04.270 → [WSc] get text: Event
13:15:06.273 → [WSc] get text: Event
13:15:08.285 → [WSc] get text: Event
13:15:10.294 → Socket Disconnected!
Вобщем, в библиотеке, по ходу дела идеологическое решение – приконнектился, по ивенту послал, закрыл соединение.
а в логах этого что-то я не увидел
Да, это я тут напитонячил криво.
Сейчас выправил и, да - через ~минуту дисконнект.
а если на ESP8266
Вроде всё нормально идёт, потом хренак - и “Connection reset by peer”.
Два питона вроде как нормально обмениваются.
...
void loop() {
webSocket.loop();
if (webSocket.isConnected()) {
String message = "Loop on " + String(millis());
Serial.println(message);
webSocket.sendTXT(message);
}
delay(500);
}
16:51:52.223 → [WS][0][sendFrame] fin: 1 opCode: 1 mask: 1 length: 5 headerToPayload: 0
16:51:52.223 → [WS][0][sendFrame] text: Event
16:51:52.223 → [WS][0][sendFrame] pack to one TCP package…
16:51:52.223 → [write] n: 11 t: 271530
> 16:51:52.223 → [271532][E][WiFiClient.cpp:422] write(): fail on fd 48, errno: 104, “Connection reset by peer”
16:51:52.255 → WS write 0 failed left 11!
16:51:52.255 → [write] not connected!
16:51:52.255 → [WS][0][sendFrame] sending Frame Done (15647us).
16:51:52.255 → Loop on 271550
16:51:52.255 → [WS-Client] connection lost.
16:51:52.255 → [WS-Client] client disconnected.
16:51:52.255 → Socket Disconnected!
16:51:52.767 → [WS-Client] connect ws…
16:51:52.767 → [WS-Client] connected to 192.168.2.3:8000.
16:51:52.767 → [WS-Client][sendHeader] sending header…
16:51:52.767 → [WS-Client][sendHeader] handshake GET / HTTP/1.1
16:51:52.768 → Host: 192.168.2.3:8000
16:51:52.768 → Connection: Upgrade
16:51:52.799 → Upgrade: websocket
16:51:52.799 → Sec-WebSocket-Version: 13
16:51:52.799 → Sec-WebSocket-Key: h5S3QZl1U6rgHFE+SDkoRw==
16:51:52.799 → Sec-WebSocket-Protocol: arduino
16:51:52.799 → Origin: file://
16:51:52.799 → User-Agent: arduino-WebSocket-Client
16:51:52.799 →
16:51:52.799 → [write] n: 243 t: 272098
16:51:52.799 → [WS-Client][sendHeader] sending header… Done (28497us).
16:51:53.327 → [WS-Client][handleHeader] RX: HTTP/1.1 101 Switching Protocols
16:51:53.805 → [WS-Client][handleHeader] RX: Upgrade: websocket
16:51:54.317 → [WS-Client][handleHeader] RX: Connection: Upgrade
А вот так у меня больше минуты работает… Если просто миллис слать без задержек - выносит секунд через 20.
void loop() {
webSocket.loop();
if (webSocket.isConnected()) {
String message = "Heap: " + String(esp_get_free_heap_size()) + ", Watermark: " + uxTaskGetStackHighWaterMark(NULL);
Serial.println(message);
webSocket.sendTXT(message);
}
//delay(500);
}
История, без сомнений, загадочная. Что-то внутрях протекает что ли… Хотя и heap и watermark драматически не уменьшаются.
Вообще забавно: взял две ESP32 и одну клиентом сделал, а другую сервером. Зацепил на одну и ту же AP. Ни единого разрыва, так скыть.
Прием/передача, правда, медленнее идёт, не лупит, как в случае с питоном.
Вот, к слову, копипастнутый с энторнетов питонячий код. Может всё же в нём кривизна осталась…
import asyncio
import websockets
async def handler(websocket, path):
while True:
try:
data = await websocket.recv()
except websockets.ConnectionClosed:
print(f"Terminated")
break
reply = f"Return back: {data}"
print(f"Server recieved '{data}'")
await websocket.send(reply)
start_server = websockets.serve(handler, "192.168.2.3", 8000)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
ESP32 не в асинхронном режиме работает вроде, в отличии от ESP8266
И что эта гипотеза даёт?
отрицательный результат будет тоже результатом, я на ESP8266 этой хрени не замечал, WS разворачивал на классическом сервере (апач+нжинкс)
PS для ESP32 сокет написан с отслеживанием и таймаута TCP/IP пакета, время классическое -5 секунд
Опять какой-то белый шум пошёл. В огороде бузина, а в Киеве дядька.
открой код да посмотри, я жеж и говорил залей на esp8266, аналогично ведёт или нет, сам к сожалению смогу только на следующей неделе посмотреть