Publish a web client via a Static IP from my server to the internet

Irrespective of the transport, i think that your client is using HTTP GET, POST, PUT and DELETE requests to interact with GCM. Correct me, if i am wrong.

NO! Only NJSCADA interacts with GCM over a dedicated TCP socket. My clients are served by NJSCADA (NodeJS server) on socket.io. For initial handshake clients connect to NJSCADA on HTTP port 3000 then switch-over to socket.io. Of course some clients can continue to communicate over HTTP. I can provide a generic client which can continue to communicate over HTTP. If you want to implement GET/PUT/POST etc it can be implemented in the generic client but its not build in. I think an eval version will give you a clear picture.

I am asking about the GCM-JSON module which i am interested in. If i use JSON payload to build a socket.io client on nodejs, then i think "http GET/PUT/POST/DELETE" request is the only way to interact with GCM-JSON module. In fact, i have already built a client and would like to test it with GCM-JSON.

The only other option i have is to expect a GCM-MQTT or GCM-KAFKA in future. In this case, irrespective of the payload, i can PubSub on topics and go forward. What's your opinion?

My GCM is primarily for serving my ARSCADA , RM SCADA etc clients thru NJSCADA server. But nothing prevents you from using NJSCADA exclusively for serving JSON payloads to dedicated clients and interacting with it using GET/PUT etc. from them. The intermediate NJSCADA is I think causing you a concern.

Its possible to deliver JSON directly from GCM to a web client without NJSCADA, but will need some small modification. I am not sure how you consume the JSON? In a browser? How does KAFKA expect the payloads to come from ? Can you explain briefly?

Yes. I don't want anything in between. I would like to use browser based clients and android apps to interact directly with Ignition server.

Yes. My clients run on Firefox/Chrome browser. I think, the only way to consume, command and control a JSON payload via socket.io/HTTP is "GET/PUT/POST/DELETE". I couldn't find any other mechanism.

KAFKA is a PubSub protocol similar to MQTT. Both clients are using topics to PubSub via their respective brokers. When it comes to scalability, KAFKA is a monster. The most exciting key feature of KAFKA is persistence. We don't need a database in between to store/retrieve the historical logs. It uses simple text file based encrypted logs to store all the payloads. You can query these logs and retrieve historical data with KSQL, the streaming SQL engine for Apache Kafka,

"GET/PUT/POST/DELETE" mechanism is slow and cumbersome compared to topic based consumption for SCADA clients.

PubNub allows you to connect android/ios devices or browsers to receive JSON packets. Only at sending end we have to replace NJSCADA with a JAVA application. If Ignition has Internet connectivity, it would be possible to send the JSON to pubnub directly from GCM!

But to which server are your clients connected to? KAFKA? Then you cant do GET / POST etc with any other server! Still don't get the picture!

Its similar to PubNub in that case with the difference that KAFKA may be on a large scale! PubNub also has a historical log of packets, It does have topics called channels. It also has functions on its server to process streaming data received/sent over pubnub.

This is what i want. Let me wait.

Let me finish my work at hand so that we have a clarity then we will take it forward.

1 Like