# Websocket for real time high performant SCADA

**URL:** <https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194>\
**Category:** General Discussion\
**Created:** [May 29, 2018, 4:56am UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194 "2018-05-29T04:56:31Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 9, 2018, 8:23am UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/82 "2018-06-09T08:23:24Z")

</div>

> [@ignitionuser0](#):
>
> Excellent idea. If you're really trying to get those '''Decision makers''' riled up about your '''''solution''''' then it's almost a necessity to implement blockchain in some fashion. When dealing with such costly errors, it is important to make sure your results are both replicated and validated. [https://www.youtube.com/watch?v=aqAajTpzK3o](https://www.youtube.com/watch?v=aqAajTpzK3o)

I don't know which idea you are talking about, if it is usage of NodeJS, indeed I am a fan of NodeJS for its simplicity. However, while we are going ga ga over nodeJS, there is nothing magical about it as projected in the video. In fact NodeJS is pretty dumb compared to other web technologies. It simply reduces its work to just responding to each request whichever connection it comes from using websockets and be ready for processing next request. The onus of processing the request without blocking it, is shifted to the developer to quickly respond to it or to delegate it to an asynchronous call and return to OS, or else the whole system will hang or crash! Of course there are instances when you just cant afford to use asynchronous calls such as when reading a file to initialize paramaters or read on a tcp socket, then you have to use a blocking call or an async block judiciously. So its more of a challenge for the developer to visualize what's going on in your system. But that's an interesting exercise to design a system based on NodeJS. Life is tough in NodeJS but rewards are high!

The ability of handling millions of users in NodejS is irrelevant for SCADA application, as number of users will be few hundred at max! Though unlimited clients is a USP for all web based SCADA's like Ignition, compared to client/server based traditional SCADAs.

I didn't understand your suggestion on usage of block-chain ! It looks too far fetched!

---

<div class="post-metadata">

**Author:** ![R.Alamsha](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@R.Alamsha](https://forum.inductiveautomation.com/u/R.Alamsha)\
**Post date:** [June 10, 2018, 12:46pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/83 "2018-06-10T12:46:49Z")

</div>

> [@PRAMANJ](#):
>
> Interface between Ignition and NJSCADA is a very simple Ignition module (called gatewaycomm) which has to be installed on Ignition server. On

I could not find any module called gatewaycomm in the module showcase. Can you pls provide the link?.

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 12:57pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/84 "2018-06-10T12:57:31Z")

</div>

> [@R.Alamsha](#):
>
> Can you pls provide the link?

as mentioned in my website, the eval version is available only on request basis. However I am going to make a download link available on my website for gatewaycomm and NJSCADA, by end of June.

---

<div class="post-metadata">

**Author:** ![R.Alamsha](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@R.Alamsha](https://forum.inductiveautomation.com/u/R.Alamsha)\
**Post date:** [June 10, 2018, 12:59pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/85 "2018-06-10T12:59:10Z")

</div>

I am asking about link for Ignition module (called gatewaycomm)

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 1:02pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/86 "2018-06-10T13:02:46Z")

</div>

"gatwewaycomm" module is an integral part of NJSCADA package and works on its own propriatory protocol between IGNITION server and NJSCADA server.

---

<div class="post-metadata">

**Author:** ![R.Alamsha](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@R.Alamsha](https://forum.inductiveautomation.com/u/R.Alamsha)\
**Post date:** [June 10, 2018, 1:17pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/87 "2018-06-10T13:17:28Z")

</div>

Interesting. Is it written in Java?. Can you pls elaborate more on the features of this module?.

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 1:25pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/88 "2018-06-10T13:25:50Z")

</div>

> [@R.Alamsha](#):
>
> Interesting. Is it written in Java?. Can you pls elaborate more on the features of this module?.

yes its written in Java as an Ignition module. When installed on Ignition, it just reads tagpaths file from a predefined location and waits on a TCP socket for NJSCADA to connect to it. When NJSCADA is installed and started , it does a handshake with gatewaycomm and they start communicating with each other like sending values of tags listed in tagpaths file from Ignition to NJSCADA periodically and writing commands received from NJSCADA clients (like button pressed etc) to Ignition data base. So gatewaycomm is not a standalone program , its just a gateway between all modules of NJSCADA (like ARSCADA, mSCADA, UNISEMS).

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 1:37pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/89 "2018-06-10T13:37:24Z")

</div>

Please see an old Tutorial for how to install the [gatewaycomm module](https://youtu.be/AHhTIOLthnA). [https://youtu.be/AHhTIOLthnA](https://youtu.be/AHhTIOLthnA)

(though its an old video of Tomcat version of ARSCADA, and gatewaycomm was called AR-signed module. The Tomcat is replaced with NodeJS server in the latest version).

---

<div class="post-metadata">

**Author:** ![R.Alamsha](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@R.Alamsha](https://forum.inductiveautomation.com/u/R.Alamsha)\
**Post date:** [June 10, 2018, 1:42pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/90 "2018-06-10T13:42:54Z")

</div>

> [@PRAMANJ](#):
>
> So gatewaycomm is not a standalone program , its just a gateway between all modules of NJSCADA

So, you need not worry much about NJSCADA being reverse engineered because, it can NOT work without gatewaycomm 🙂

1. Is it possible to make gatewaycomm as a JOSN payload server and consumer?.
2. Is it possible to embed an MQTT JSON client inside gatewaycomm?. This will be very interesting for HA business.
3. Finally, keep it affordable for the masses. Something like USD 199/- for gatewaycomm.

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 1:53pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/91 "2018-06-10T13:53:10Z")

</div>

> [@R.Alamsha](#):
>
> Is it possible to make gatewaycomm as a JOSN payload server and consumer?.  
> Is it possible to embed an MQTT JSON client inside gatewaycomm?. This will be very interesting for HA business.  
> Finally, keep it affordable for the masses. Something like USD 199/- for gatewaycomm.

1.Gatewaycomm is very specific to Ignition it uses its SDK to read write tags to Ignition memory tags. Any JSON payload handling has to be done by NJSCADA on one of its clients. You need gatewaycomm module if you have to talk to Ignition.  
2. MQTT is third party I cannot integrate it with them it will open a new pandora's box for me.  
3. As said earlier, gatewaycomm is required only for communication between Ignition and NJSCADA using its own propitiatory protocol , cannot be made available for third party modules.

---

<div class="post-metadata">

**Author:** ![R.Alamsha](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@R.Alamsha](https://forum.inductiveautomation.com/u/R.Alamsha)\
**Post date:** [June 10, 2018, 2:14pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/92 "2018-06-10T14:14:07Z")

</div>

> [@PRAMANJ](#):
>
> 1. MQTT is third party I cannot integrate it with them it will open a new pandora's box for me.

ok. May be you have to write a dedicated "MQTTgatewaycomm"in future. [quote="prafull\_jaltare, post:91, topic:18194"]  
Any JSON payload handling has to be done by NJSCADA on one of its clients. You need gatewaycomm module if you have to talk to Ignition.  
[/quote]

This answer is not clear. My question is, can gatewaycomm work as a JSON payload server and consumer seamlessly?.

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 2:21pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/93 "2018-06-10T14:21:28Z")

</div>

> [@R.Alamsha](#):
>
> ok. May be you have to write a dedicated "MQTTgatewaycomm"in future.

MQTT has its own module for communicating with Ignition, why should I have one more? If anyone wants to use MQTT with Ignition they will use their module, why will anyone need my gatewacomm? I use PubNub for IoT instead of MQTT , then what is the need for me to develop such a module for MQTT.

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 2:24pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/94 "2018-06-10T14:24:56Z")

</div>

> [@R.Alamsha](#):
>
> This answer is not clear. My question is, can gatewaycomm work as a JSON payload server and consumer seamlessly?.

The server and consumer is built in my NJSCADA server module, which can receive JSON and send JSON. The ARSCADA, mSCADA, UNISEMS are like modules to NJSCADA server which can be removed from it, if only JSON payload server is required. gateway comm module acts as a pipe between JSON payload server and Ignition. (You can think of them as one module if you wish!).

The NJSCADA server will talk to gatewaycomm module on one side,( without ARSCADA and mSCADA) , and to a client delivering and receiving JSON payloads on the other end.

In fact it can communicate with many clients to send / receive JSON packets connecting to many different sources, if required.

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 2:34pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/95 "2018-06-10T14:34:25Z")

</div>

> [@R.Alamsha](#):
>
> So, you need not worry much about NJSCADA being reverse engineered because, it can NOT work without gatewaycomm 🙂

It works in standalone mode where 10 tags are simulated from 0 to 100, for demo purposes. So still there is a possibility of reverse engineering, but I have obfuscated my JS code.

---

<div class="post-metadata">

**Author:** ![R.Alamsha](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@R.Alamsha](https://forum.inductiveautomation.com/u/R.Alamsha)\
**Post date:** [June 10, 2018, 3:12pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/96 "2018-06-10T15:12:09Z")

</div>

> [@PRAMANJ](#):
>
> The NJSCADA server will talk to gatewaycomm module on one side,( without ARSCADA and mSCADA) , and to a client delivering and receiving JSON payloads on the other end.

Can it work as a stand alone JSON SCADA without Ignition?.

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 3:15pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/97 "2018-06-10T15:15:16Z")

</div>

> [@R.Alamsha](#):
>
> Can it work as a stand alone JSON SCADA?.

mSCADA does have limited SCADA features, but it doesn't have drivers for PLCs or OPC Server. For that it needs Ignition.

---

<div class="post-metadata">

**Author:** ![R.Alamsha](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@R.Alamsha](https://forum.inductiveautomation.com/u/R.Alamsha)\
**Post date:** [June 10, 2018, 3:18pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/98 "2018-06-10T15:18:46Z")

</div>

Good. I suggest, you change your UI. It gives a very bad impression. Clients will run away. Build it on React.

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 3:28pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/99 "2018-06-10T15:28:54Z")

</div>

It was originally designed to provide Virtual tour interface to Ignition as an add on module ARSCADA. The mSCADA was built later as optional module with limited SCADA features using SVG, but can be extended with REACT or VUE, but Ignition is the IMPALA for SCADA as you said.

---

<div class="post-metadata">

**Author:** ![R.Alamsha](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@R.Alamsha](https://forum.inductiveautomation.com/u/R.Alamsha)\
**Post date:** [June 10, 2018, 3:56pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/100 "2018-06-10T15:56:09Z")

</div>

> [@PRAMANJ](#):
>
> but can be extended with REACT or VUE,

Since Ignition Perspective is on React, i suggest, you offer your UI on VUE/Angular. Cut a deal with Kendo UI. and showcase awesome apps. You can make some money

---

<div class="post-metadata">

**Author:** ![PRAMANJ](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pramanj/32/66935_2.png) [@PRAMANJ](https://forum.inductiveautomation.com/u/PRAMANJ)\
**Post date:** [June 10, 2018, 3:58pm UTC](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194/101 "2018-06-10T15:58:52Z")

</div>

After ARSCADA, a remote dash board module RMSCADA was built using PubNub which were the missing features in Ignition. Later I mSCADA was built to add HTML5 and SVG based graphics (Ignition's UI is build on JAVA swing library). My mission is to leverage latest developments in technology in Industrial Automation domain.

[Previous page](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194.md?page=4)

[Next page](https://forum.inductiveautomation.com/t/websocket-for-real-time-high-performant-scada/18194.md?page=6)
