On Wed, Oct 31, 2018 at 9:52 PM Ondrej Tomcik <ondrej.tom...@kistler.com> wrote:
> > ________________________________________ > From: iotivity-dev@lists.iotivity.org [iotivity-dev@lists.iotivity.org] > on behalf of yitzc...@coapp.co.il [yitzc...@coapp.co.il] > Sent: 31 October 2018 19:16 > To: iotivity-dev@lists.iotivity.org > Subject: Re: [dev] Maintaining a connection from Coap devices to the > iotivity cloud > > On Wed, Oct 31, 2018 at 03:26 AM, Ondrej Tomcik wrote: > What do you need such an often keep alive exchange for? > If a connection breaks, the Coap device will no longer receive requests. > Therefore I need it to try to reconnect as soon as this happens. The only > existing mechanism I am aware of telling if the connection is broken is via > the PING/PONG mechanism. > > -> yes, thats what ping pong is for. In case the connection was not closed > gracefuly, you are waiting for a tcp timeout. If you want to know if the > device is online, thats the only way. But you have to consider your > requirements, how accurate information about the device status has to be? > Additionaly, you should introduce timeouts for your requests. So not only > ping the device every 5 seconds, what is actually a bad idea, but handle > also request timeouts and flag the device as not reachable for example. Its > your business logic, based on your requirements and SLAs. > > What kind of load? > Not necessarily a specific load, but assuming an IOT cloud with thousands > or more devices, I will expect the devices themselves to initiate the ping > instead of the gateway, in order to take of some load from the gateway, but > I guess this point is not clearcut. > > What is the purpose of the ping pong? To provide an accurate information > if the device is there ( and delay statistics for example, ... ). Who is > interested if the device is there? Cloud user. Who owns information if the > device is online? Cloud. Cloud is the one who owns and maintains this > information. Cloud should be responsible to ping the device to check if it > is online. Device is not interested if cloud is there. > You may have ping configuration per device, for some specific SLA use > cases, but its cloud who has to accurately provide this information. > Hi Ondrej, Just to explain how I see the "who is interested" matter... If you look at the "device is offline" *as a fact / event*, you are right, the cloud needs to detect it, report it, and then "someone else" provides the applicative handling of this event. However, there is a situation when a client establishes a TCP connection to the cloud, but the connection becomes "dead", *so now it's the client's responsibility to detect this state, and re-establish the connectivity.* Since security-wise clients usually initiate the connectivity, the cloud side can detect the issue, but not to perform the recovery. I think this need (on the client side) should be covered by the infrastructure, and not left for the developers of a particular application to figure out. How do you believe this client-side need should be addressed? Max. > > > -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#10006): https://lists.iotivity.org/g/iotivity-dev/message/10006 Mute This Topic: https://lists.iotivity.org/mt/27796570/21656 Group Owner: iotivity-dev+ow...@lists.iotivity.org Unsubscribe: https://lists.iotivity.org/g/iotivity-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-