Leshan connect to server and cloud - eclipse

I have the task of implementing iot device management using Eclipse Leshan. I have difficulty understanding how Eclipse Leshan works in connecting IOT sensors with servers and cloud. Is it true if I declare that Eclipse Leshan does not require a gateway like Eclipse Kura to connect into server and cloud?
Does anyone know where the complete documentation about Eclipse Leshan is? it would be very helpful if there were examples of programs in implementing the eclipse leshan.
Thank you

Eclipse Leshan is a library for implementing applications that use the LWM2M protocol to manage devices. As such, your application can use Leshan's Java API in order to interact with devices that also support LWM2M.
LWM2M does not per se mandate a transport protocol. However, the spec is written assuming that CoAP over UDP is used for that purpose. In fact, the LW in LWM2M stands for Lightweight and as such, using CoAP as the transport protocol makes a lot of sense for managing constrained devices.
Eclipse Leshan itself does not connect to a server or cloud but instead is usually part of an application that is hosted on a server (on the cloud). However, you need to implement that application yourself because Leshan, as indicated above, is just a library. The devices then interact with your LWM2M enabled application. Because CoAP/UDP uses standard IP, this interaction can occur over public internet infrastructure if desirable in your use case, i.e. no gateway is necessarily needed. You can, however, also connect your devices to a local gateway, e.g. Kura, and then connect the gateway to your LWM2M server in the cloud instead. It really depends on your use case and the capabilities of the devices.

Related

Web Socket: IIS WebSocket Protocol feature need to be enabled for Socket.io?

For one of my application, I have implemented Web socket using socket.io and hosted in IIS. Currently socket connection helping to provide two way connection between client (React) and server (node.js).
As I mentioned, I have hosted my application in IIS. I have few doubts regarding Turn Windows features on or off -> Internet Information services -> World wide Web Services -> Application Development Features -> WebSocket Protocol. I have tested my application without enabling this feature, its working fine, but I would like to confirm below stuffs.
WebSocket Protocol
Do I really need to enable WebSocket protocol feature to make websocket work in my application? If so, how now it is working fine without enabling (I haven't do performance and stress testing, I may face issue on this).
What if I not enabling this feature? in short what is the actual use of this feature?
It would be helpful if anyone answer the above questions. Thanks in advance.
WebSocket as part of the HTTP stack requires a bunch of things to be ready on Windows (across multiple components), so hope this answer helps a little.
HTTP.sys, a driver deep down in Windows OS, is upgraded to support the necessary packet communication required by the protocol.
The IIS WebSocket module, an IIS extension which many other Microsoft frameworks (like SignalR) depend on.
So WebSocket support is by default on in HTTP.sys, and you don't need the IIS module if your framework (socket.io) has no dependency there.
Note that the "Summary" section provides several useful links,
https://learn.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support#summary
and the same article also reveals that IIS WebSocket module has
conflicts with socket.io.

How do I develop an UEFI application using the network packages?

I see GNU EFI is a tool chain to compile applications, but it doesn't seem to come with many libraries.
Tianocore EDK2 comes with a lot of code, with modules and drivers that I'm still figuring out. By default, it builds a full firmware image that I use as a BIOS.
What I need to do is, develop a network-capable application that will query a server for boot instructions, and then prepare the next steps. The idea is to control the boot process from the management server, so the client should be able to follow the instructions to boot from TFTP, or from local storage, or update local storage etc.
You have two main options for writing UEFI network applications.
Managed Network Protocol has the firmware trying to autoconfigure your network and download files as appropriate via TFTP/PXE or HTTPS.
Simple Network Protocol gives you raw access to a packet interface if you want to handle things yourself.

Can I use sockets on Appengine without a special lib?

I'm confused by the GAE documentations. It says App Engine supports sockets without requiring you to import any special App Engine libraries or add any special App Engine code. but it seems misleading as just above it says App Engine supports outbound sockets through the appengine/socket package.
I would like to connect to an IMAP server using the standard net package. Is that possible or I'm stuck with the GAE sockets API?
https://cloud.google.com/appengine/docs/go/sockets/
It is not possible to open an outbound socket without going through the appengine/socket api. This is because it works through RPC and an appengine.Context is needed to do that. You can still use the IMAP library you linked, though, as it provides a function to create a client with a given net.Conn. You can get a net.Conn from appengine/socket and pass it to NewClient to do your business. The reason it works on python and java is because they both use thread local memory to manage request state implicitly, whereas the go runtime does not.
Nothing stops you from connecting to an Imap server, since you will initiate an outbound connection. For java, the standard java mail packages work out of the box.
Only for paid apps though, i.e. you need to have billing enabled.

How to set up an IDE on a remote server?

Im interested in doing some development from my iPad, and one idea I had would be to code from the safari browser. Does anyone know of a way to set up eclipse on a cloud-based server, so that it can be accessed from a browser?
I believe, you will need the following parts to make it work
The cloud server must be based on one of the supported Eclipse Target Environments.
The cloud server provider must support UI based on some sort of remote desktop - e.g. VNC. Be aware that many cloud providers does not allow UI.
iPad must support the same remote desktop technology. There seem to be many VNC implementations for iPad...
I guess the difficult part is to find a cloud server to use. Though you, as an alternative, could use any PC with an VNC server where you have Internet access...

Communicating with Java web app from non-java app through TCP/IP socket

Hosting an application on a web application server e.g. JBoss automatically brings in lots of app server specific functionalities with it e.g. security, clustering & load balancing etc. I have a situation where I have to develop a server app with which, legacy apps can talk to over TCP/IP socket as well as be highly available. Initially, I had though of using JBoss app server to leverage its clustering support for HA. However, I am not sure whether it would be possible to connect to a JBoss web app using pure TCP/IP sockets from both java and non-java apps.
What is the best way to achieve this without using web service or Http approach?
UPDATE: I am specially interested to know how legacy apps will connect to the hosted web app through TCP/IP socket.
A really simple solution to bridge the two worlds would be to add a simple Java server which maps the old TCP/IP requests to HTTP requests. This is probably a pretty braindead task, so this "server" will be simple to write and maintain. Also, this server won't need as much power since it just accepts and forwards connections (no business logic or DB code).
On the JBoss server, you develop like you normally would. The legacy apps connect to the little bridge server which passes the requests on to JBoss and translate the result back.
This ensures that you're building for the future: When new apps are developed, they can connect directly to JBoss and use all the great HTTP features.
There's no reason why you can't open up a normal socket in (say) a servlet application hosted in JBoss.
You can then get a byte stream from this. The headache is then to decide on a platform-independent representation of your messages, such that your client end can format and send such that the JBoss-hosted end can read. But it's all perfectly feasible.
I would implement a very simple http (1.0) client.