Document that the socket receive event is fired for every frame, fixes #1849
This commit is contained in:
parent
b4319bdb4b
commit
e8d5a05952
|
@ -324,6 +324,22 @@ srv:on("connection", function(sck, c)
|
||||||
end)
|
end)
|
||||||
srv:connect(80,"httpbin.org")
|
srv:connect(80,"httpbin.org")
|
||||||
```
|
```
|
||||||
|
!!! note
|
||||||
|
The `receive` event is fired for every network frame! Hence, if the data sent to the device exceeds 1460 bytes (derived from [Ethernet frame size](https://en.wikipedia.org/wiki/Ethernet_frame)) it will fire more than once. There may be other situations where incoming data is split across multiple frames (e.g. HTTP POST with `multipart/form-data`). You need to manually buffer the data and find means to determine if all data was received.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
local buffer = nil
|
||||||
|
|
||||||
|
srv:on("receive", function(sck, c)
|
||||||
|
if buffer == nil then
|
||||||
|
buffer = c
|
||||||
|
else
|
||||||
|
buffer = buffer .. c
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
-- throttling could be implemented using socket:hold()
|
||||||
|
-- example: https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_examples/pcm/play_network.lua#L83
|
||||||
|
```
|
||||||
|
|
||||||
#### See also
|
#### See also
|
||||||
- [`net.createServer()`](#netcreateserver)
|
- [`net.createServer()`](#netcreateserver)
|
||||||
|
|
|
@ -148,6 +148,8 @@ srv:on("connection", function(sck, c)
|
||||||
end)
|
end)
|
||||||
srv:connect(443,"google.com")
|
srv:connect(443,"google.com")
|
||||||
```
|
```
|
||||||
|
!!! note
|
||||||
|
The `receive` event is fired for every network frame! See details at [net.socket:on()](net.md#netsocketon).
|
||||||
|
|
||||||
#### See also
|
#### See also
|
||||||
- [`tls.createConnection()`](#tlscreateconnection)
|
- [`tls.createConnection()`](#tlscreateconnection)
|
||||||
|
|
Loading…
Reference in New Issue