unedlabs / rip-labview-server Goto Github PK
View Code? Open in Web Editor NEWA server implementation of the RIP protocol in LabVIEW
License: GNU General Public License v3.0
A server implementation of the RIP protocol in LabVIEW
License: GNU General Public License v3.0
User action:
Expected result:
It should be possible to mark one or more variables as "private". These variables should not be readable nor writable by the clients, as they are internal variables needed for the program but of no interest to clients.
Right now, only int32 and default double are supported, but all LabView int and double types should be supported
We need to support array types in both controls and indicators
When a client disconnects and reconnects, lost SSE events should be sent to him
Multiuser not handled
Strings in Global_Configurations.vi are copied to json without escaping special characters.
Example: http://localhost:8080/RIP?expId=TestOK Produces a good json response, that's fine.
But if "Description" field is changed from the current value "TestOK" to:
"Description in
two lines"
Then the resulting json is ill formed.
The same occurs with other fields like "Name", "Authors", "Keywords" and so on...
We actually have BasicMethods/Sub_methods/Escape_json.vi that implements the escaping logic used in get method, maybe @jcsombria knows where to place this block to solve the issue.
JSON Patch is a format for describing changes to a JSON document: http://jsonpatch.com/
Adding support for JSON Patch would allow the RIP LabView server to only send those variables that have changed since the last event was sent to the client, reducing network load. Right now, the server sends the whole JSON document, containing all variables and their respective value each time, even if only one of those variables' value (typically, the time) has changed.
Do you think we should implement this? A similar alternative would be to send a smaller JSON with just the variables that have changed since the last event, but since the JSON format exists, it would probably be better to use this standard.
Methods:
The error message the SSE web service returns when the expId parameter is not given must be in JSON and should be understood by the client.
The SSE LabView service needs to receive the experience identifier and the list of indicators.
This involves two tasks:
Currently, the method info(expid) gives a list of controls/indicators and their types, but it would be nice to have an extended description:
{
'info': {
'name': 'The name of the experience',
'description': 'A short description of the experience',
},
'methods':{
'get':{
'purpose':'The purpose of the method',
'params':['variables':'[string]'],
}
...
},
'readables':[['x','y',...],['number','string',...]],
'writables':[['z','t',...],['number','string',...]],
}
At the moment, three events can be sent:
There are several improvements to be made:
First, 1) is a subcase of 3).
Second, the value of the threshold (Delta) should be parametrizable both by the lab owner and the client.
Third, right now the variable which change is compared to the threshold is selected by the lab owner in a very ugly way. It should be clean and easy and the client should be able to selected it too.
Fourth, the period for which the Delta condition is checked should also be parametrizable both by the lab owner and the client. The first one is already done, but at the moment this value is set for all experiences defined in the RIP server, but it should be possible to give it different values for each one.
The communication method should be such as:
Currently, the server accepts:
"{..., "params":["expid","stringin","intin"],["hola", "2"]], ...}"
instead of:
"{..., "params":["expid","stringin","intin"],["hola", 2]], ...}"
Server can't parse jsonrpc 2.0
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.