-
• #2
Upd: I've tried this example and result the same. Each
POST
increases memory usage and then Web Server not responding.Google Chrome:
This page isn’t working 10.10.10.100 didn’t send any data.
ERR_EMPTY_RESPONSE____ _ | __|___ ___ ___ _ _|_|___ ___ | __|_ -| . | _| | | | | . | |____|___| _|_| |___|_|_|_|___| |_| espruino.com 2v00 (c) 2018 G.Williams Espruino is Open Source. Our work is supported only by sales of official boards and donations: http://espruino.com/Donate > Connected! Connect to http://10.10.10.100 WARNING: setsockopt(SO_REUSPORT) failed { "mytext": "Testing" } We got sent the text Testing >process.memory(); ={ free: 2172, usage: 428, total: 2600, history: 215, gc: 0, gctime: 2.224 } { "mytext": "Testing" } We got sent the text Testing > >process.memory(); ={ free: 2015, usage: 585, total: 2600, history: 218, gc: 0, gctime: 2.324 } { "mytext": "Testing" } We got sent the text Testing >process.memory(); ={ free: 1858, usage: 742, total: 2600, history: 218, gc: 0, gctime: 2.419 } { "mytext": "Testing" } We got sent the text Testing >process.memory(); ={ free: 1701, usage: 899, total: 2600, history: 218, gc: 0, gctime: 2.52 } { "mytext": "Testing" } We got sent the text Testing >process.memory(); ={ free: 1544, usage: 1056, total: 2600, history: 218, gc: 0, gctime: 2.637 } { "mytext": "Testing" } We got sent the text Testing >process.memory(); ={ free: 1387, usage: 1213, total: 2600, history: 218, gc: 0, gctime: 2.863 } { "mytext": "Testing" } We got sent the text Testing >process.memory(); ={ free: 1230, usage: 1370, total: 2600, history: 218, gc: 0, gctime: 2.822 } { "mytext": "Testing" } We got sent the text Testing >process.memory(); ={ free: 1073, usage: 1527, total: 2600, history: 218, gc: 0, gctime: 2.935 } >
-
• #3
Can you post your code?
-
• #4
Wilberforce
Can you post your code?I've found what is the source of problem. If you don't put
callback
function (as in example below) into POST handler your memory usage increases with every POST request and program after a while crashed. With suchcallback
everything works now, I think :)// This handles any received data from the POST request function handlePOST(req, callback) { var data = ""; req.on('data', function(d) { data += d; }); req.on('end', function() { // All data received from the client, so handle the url encoded data we got // If we used 'close' then the HTTP request would have been closed and we // would be unable to send the result page. postData = {}; data.split("&").forEach(function(el) { var els = el.split("="); postData[els[0]] = decodeURIComponent(els[1]); }); // finally our data is in postData console.log(postData); // do stuff with it! console.log("We got sent the text ", postData.mytext); digitalWrite(LED1, postData.led1); digitalWrite(LED2, postData.led2); // call our callback (to send the HTML result) callback(); }); }
-
• #5
Could you post your entire code?
There's a high likelihood that you're just not closing the POST request with
.end()
- it's then left open, eating up memory space until memory runs out. -
• #6
Sorry, I can't post that code. I have deleted it. I believe that I didn't use
.end()
. So it can be the reason.
Though there is a part of new code that works fine now:// On POST Request Handler function onPOST(req, res) { let data = ''; req.on('data', d => data += d); req.on('end', () => { try { let obj = JSON.parse(data); mod = obj.mode; res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Mode Set'); } catch (err) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end(`Error: ${err}`); } }); }
-
• #7
Yes - not calling end would do that!
-
• #8
I've tested some code without
.end()
. It eats memory and crashes like I described above.
Gordon, Wilberforce thank you for help!
Hello everyone!
I'm using ESP32 DevKit with
espruino_2v00_esp32
Flashed:
python "../../esptool/esptool.py" --chip esp32 --port COM6 --baud 921600 --after hard_reset write_flash-z --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 bootloader.bin 0x8000 partitions_espruino.bin 0x10000 espruino_esp32.bin
ESP on startup connects to my local Wifi and create Web Server that serves web page. I can connect to this Web Server and get web page without any problem. JS on page generates every 2 seconds
GET
request and receivesJSON
string. All OK. But when I'm starting sendPOST
request after several such requests Web Server not responses anymore . Also I noticed that after everyPOST
increases memory usage.So I need your help... Is it my code or something else?
Console Log: