How to build a MeteorJs application server-side only? - meteor

i'm refactoring an application build when meteor was in 0.5.x
I need to scale the application, so i will now have different applications able to run on different core. One of them will be dedicated to web-application, but others are server only. For those case i don't want Meteor to serve anything, it must not be an http server.
I tried to configure differently the package list (file .meteor/packages:
# standard package of meteor-platform in server app only
application-configuration
autoupdate
base64
binary-heap
callback-hook
check
ddp
deps
ejson
follower-livedata
geojson-utils
id-map
json
logging
meteor
mongo
observe-sequence
ordered-dict
random
retry
routepolicy
# standard package of meteor-platform in client app
#blaze
#blaze-tools
#boilerplate-generator
#html-tools
#htmljs
#jquery
#minifiers
#minimongo
#reactive-var
#spacebars
#spacebars-compiler
#templating
#tracker
#ui
#webapp
#webapp-hashing
# specific app package
But when i run #> meteor
Then it tells me that the server is listening, so it doesn't work
I also tried to remove "browser platform" :
meteor remove-platform browser
but it tells me that it cannot remove platform in this version of meteor
Where am i wrong ? the list of packages is not the right one for a server only application ?

Not possible at the moment, "maybe in a future version" as someone from MDG says

Meteor relies on the DDP package to listen to incoming requests and DDP listens on websockets, which is basically http.
Therefore it has to listen for something on some port. If it does not listen, you cannot tell the app to do anything or ask it for anything so then, what use is it?
But if you don't want your app to interfere with your other apps in tems of the ports it binds to, then give it a custom port when you are starting it.
$ meteor run --port 12345

Related

Persona U are U 4500 Web API

I am new to biometrics. I bought a new Persona U are U 4500 Device and SDK from a vendor. The SDK has some samples (as expected). All of the samples run smoothly except the WebSample. it do not detects my device in addition it gives an error in the console.
Can anyone please help me how to fix this issue and guide me as why am i facing this problem? is it something related to my wss://localhost?
Update
By further diving into the program i found the specified url https://127.0.0.1:52181/get_connection in websdk.client.bundle.min.js when i opened the link it says
{
"code": -2147024894,
"message": "The system cannot find the file specified."
}
Am i missing some file?
I don't have it in front of me now, because I switched back to the U.are.U 2.2.3 SDK, which does not have this feature.
But it sounds like you possibly have not installed the Digital Persona Lite client component. This runs a separate WebSocket service on port 9001 (IIRC) through which the JavaScript client then communicates.
It is described here: https://hidglobal.github.io/digitalpersona-devices/tutorial.html
After installation, you will need to restart.
The call to https://127.0.0.1:52181/get_connection should then respond with details of the WebSocket service, to which the JavaScript client will connect.
NOTE: The WebSkd library requires DigitalPersona Agent running on a
client machine. This agent provides a secure communication channel
between a browser and a fingerprint or card device driver. The
DigitalPersona Agent is a part of a HID DigitalPersona Workstation. It
can be also installed with a DigitalPersona Lite Client. If you expect
your users do not use HID DigitalPersona Workstation, you may need to
provide your users with a link to the Lite Client download, which you
should show on a reader communication error:
A link is provided there to download the Lite client from here: https://www.crossmatch.com/AltusFiles/AltusLite/digitalPersonaClient.Setup64.exe
you just add a script call of the following code "crossorigin = '' ". "crossorigin=''". It will look like this:
<script src="scripts/websdk.client.bundle.min.js" crossorigin="*"></script>
<script src="scripts/fingerprint.sdk.min.js" crossorigin="*"></script>

Which user is running the R on OpenCPU server side?

I'm inexperienced in using opencpu as a server and so I tried to find a answer to this in the documentation but did not found any answers to this question. Never the less this seems quite basic to me in terms of permission and authentication, so I guess this is documented somewhere and I just did not found it....
The question I have is regarding users and permissions when running a request to the OpenCPU server.
I've written a R package which I want to host using the OpenCPU server. So far I managed to install OpenCPU server without any problems and it works fine for most functions in my R pakage. However one function uses Sys.getenv('USERNAME') to determine the user which runs the code. But when the R code is triggered by a client request I have no clue how to figure out the user.
Min Example:
Suppose I have a function "myFun" included in my R package named "MyRPkg" like:
MyRPkg/R/myFun.R:
myFun(v){
return(Sys.getenv('USERNAME'))
}
When I've installed the package (in the "root" R library) and have my OpenCPU server running than I can access the package and call this function by a POST request like:
SERVERNAME/ocpu/library/MyRPkg/R/myFun/json
and get an empty string as an answer.
[""]
How do I figure out what is happen on the server side in terms of which user "runs" the R code and is it possible to configure this?
My initial thought was that the user should be "data-www" which is the default Apache setting on my system. Don't know at what layer the user is set, Apache, rApache or opencpu, but I'm guessing it should be configurable on OpenCPU level?
The System the server runs on is more or less a linux Ubuntu server.
The OpenCPU system runs on top of your system default Apache2 server. Which uid is used to run the apache2 daemon is configured on your system. By default it is www-data on Debian/Ubuntu. You can probably override this somewhere.

Meteor: manually update catalog

My application is behind a corporate firewall and proxy. I am able to add new packages but somehow I cannot update the catalog. Probably because websockets are not allowed through the firewall.
Is there a method to manually get the latest catalog? The proxy variables HTTPS_PROXY and HTTP_PROXY are set of course.
Opening db file /pkgs/meteor/.meteor/package-metadata/v2.0.1/packages.data.db
In remote catalog refresh
lastSync = { timestamp: 1509131556799, _id: 'lastsync' }
Unable to update package catalog (are you offline?)
If you are using Meteor behind a proxy, set HTTP_PROXY and HTTPS_PROXY environment variables or see this page for more details:
https://github.com/meteor/meteor/wiki/Using-Meteor-behind-a-proxy
Error during WebSocket handshake: Unexpected response code: 400
You could update the catalog on your dev machine, then build it and deploy with the updated packages as a tar.gz in the restricted environment.
Otherwise just remove all packages and then add them back in if that downalods the latest version of all the packages.
The "solution" was
Meteor refresh on my laptop with normal internet connection
Copy the content .meteor/package-metadata/ to the internal system
Run Meteor update with METEOR_OFFLINE_CATALOG=1
Quite an annoying process. I think a meteor refresh should be done without Websockets or at least have the choice of disabling. DISABLE_WEBSOCKETS=1 did not work in my case.

Grunt+Bower: dependency to another local project

I have two local Grunt+Bower-projects with typical build and watch/serve tasks:
Client contains the client to be publicly released
AdminClient is an extension to client intended for internal administration use
AdminClient should re-use Client code and build-result. watch/serve must behave transparently for any change in Client and AdminClient.
How can I do this with Grunt+Bower?
It is a basic problem solved in C# with project dependency and in java typically with maven sub-modules.
You can have the Client configuration in a separate file that you extend in the AdminClient.
var common = require("common.js");
...
grunt.initConfig(common.config);

How to start using my new installation of JabbR on AppHarbor?

Question to all the JabbR/SignalR/AppHarbor/Janrain/ASP.NET integration experts out there:
I successfully forked JabbR from GitHub and cloned into my repo!!!
I also successfully deployed to a new AppHarbor application in the Beta environment in order to enjoy WebSocket support!!!
I also successfully set up JanRain's engage service for authentication for my application.
I also happily saw my application start up on the public domain (http://jabbr-14.apphb.com/) and successfully created my first account and got authenticated.
NOW, I just CAN't post, create, broadcast, etc., or —for that matter— do anything useful in my chat!!!
How do I start using this thing?!?!
Basically this is how my app looks in the browser, but I just can't get it to do anything!!!
As #halter73 mentioned, it was only that commands have to preceded with '/'.

Resources