Licensing – how licenses are taken and released¶
This chapter describes how nexxcite counts licenses, when a license is taken and when it is released again. A separate section explains how web browsers handle inactive tabs and what that means for license usage.
It is intended for administrators and operators of a nexxcite installation.
1. The license model at a glance¶
nexxcite is licensed by concurrent users: the license key states how many users may work with nexxcite at the same time. A user who signs out releases their license, and another user can use it.
A license key contains:
| Item | Meaning |
|---|---|
| Licensee | The company the license is issued to. It is shown under "About nexxcite" in the user menu as "Licensed for …". |
| Term | The date up to which the license is valid (including that day). |
| Concurrent users | How many users may be signed in at the same time. |
| Customer licenses | Stated in the key ("unlimited" or a number). They are currently not enforced. |
| Additional modules | Separately licensed modules, each with its own term. A module is never valid longer than the license itself. |
The license key is digitally signed. It can neither be changed nor created by anyone else. A modified or damaged key is not accepted.
2. Entering and renewing the license key¶
First installation¶
As long as no valid license key is stored, nexxcite is completely locked – including the sign-in page. Every request leads to the page "License required". Paste the license key there and activate it with "Activate license". The application is available immediately afterwards.
You can paste the key exactly as you received it – as a block between
-----BEGIN NEXXCITE LICENSE----- and -----END NEXXCITE LICENSE-----, line breaks included.
Renewing or extending the license¶
Enter a new key (renewal, more users, additional modules) in the Admin Studio under System → Settings in the field "License Key" and save. An invalid key is rejected when saving; the previous key then stays active.
The new key takes effect immediately, also while a sketch is open. With several servers, the other servers pick up a new key within about 30 seconds.
When the license expires¶
- 30 days before it expires, the Admin Studio shows a notice below its header. The same applies to additional modules that end before the license.
- After it has expired, nexxcite is locked just as on a first installation. Users are taken to the page for entering the license key. Requests to the REST API are rejected as well. Background processing (scheduled actions, mailbox listeners) keeps running.
3. What takes a license?¶
One user – one license¶
A signed-in user takes exactly one license, regardless of
- how many browser tabs they have open,
- how many browsers or devices they use at the same time,
- which server of an installation with several servers they work on.
The license is released only when the last connection of that user has ended.
License-free users¶
Users who have at least one role with the property "License free" do not take a license. They can always sign in. The property is the switch "License free" in the role editor (Admin Studio → Access → Roles). This property is intended for technical users and special cases agreed in your license contract.
Reserved licenses (named users)¶
A license can be reserved for individual users. They are selected in the Admin Studio under System → Settings → "Reserved Licenses".
- A user with a reserved license can always sign in, even when all other licenses are in use.
- Every reserved license is permanently deducted from the concurrently usable licenses – whether its user is signed in or not.
- You can reserve at most as many licenses as the license has users. Further entries are not counted and are marked as such on the license page.
Example: The license covers 25 concurrent users, and a license is reserved for 5 users. These 5 can sign in at any time. All other users share the remaining 20 licenses.
Access through the REST API¶
An application that works with nexxcite through the REST API signs in as a user and takes a license for it – exactly like a user in a browser. If that user is already signed in in a browser, no second license is taken. Users with a license-free role do not take a license here either.
When all licenses are in use, nexxcite refuses to issue an access token with the error
temporarily_unavailable. The calling application should try again later.
4. Signing in when all licenses are in use¶
A user who signs in while all licenses are in use is not turned away. Instead they see a waiting screen ("All licenses are in use") with
- the current usage (for example "20 of 20 concurrent licenses are in use"),
- the time of the next automatic attempt.
nexxcite tries again every 30 seconds. As soon as a license becomes free, the application opens without any further action. "Try now" starts an attempt immediately, "Sign out" ends the sign-in.
Who gets a free license first depends on the moment of the attempt. There is no queue with fixed positions. Even with several servers, every license is handed out only once.
5. When is a license released?¶
| Situation | License is released | Remark |
|---|---|---|
| The user signs out | immediately | – |
| The last browser tab is closed | immediately | The browser tells the server that the tab was closed. |
| The user navigates to another website in the last tab | immediately | same as closing |
| The connection drops (network gone, Wi-Fi change, computer asleep, laptop lid closed) | after about 3.5 minutes | 30 s until it is detected, then 3 min waiting for a reconnect (see below) |
| The browser puts an inactive tab to sleep or discards it | after about 3.5 minutes | see section 6 |
| The sign-in expires | at the latest after the sign-in check interval | according to the session settings in the Admin Studio |
| An administrator ends the session (Admin Studio → Authenticated Users / User Sessions) | immediately | – |
| A server fails unexpectedly | after about 15–20 minutes | The server is marked as failed after 10 minutes without a sign of life; the release happens with the next clean-up (every 5 minutes). When a server is shut down in an orderly way, its licenses are released immediately. |
| An access token of the REST API expires | at the latest about 5 minutes after the token has expired | with the next clean-up |
Why 3.5 minutes after the connection drops?¶
A short interruption should not cost any work. nexxcite therefore keeps the user's session for 3 minutes after the connection dropped. If the connection comes back within that time (tunnel, Wi-Fi change, short sleep), the user continues without reloading, including input that has not been saved yet. Only after that the session is discarded and the license released.
It takes up to 30 seconds until the server notices an interruption at all. Browser and server exchange a small sign of life about every 15 seconds. If it is missing for 30 seconds, the connection is considered lost.
6. Inactive browser tabs¶
Summary¶
- An open nexxcite tab in the foreground keeps its license as long as it is open – even if the user does nothing.
- A tab in the background (another tab active, window minimised) can lose its connection after a few minutes, depending on the browser and its settings. The license is then released after about 3.5 more minutes.
- Whether and when this happens is decided by the browser, not by nexxcite. The behaviour is therefore not the same for all browsers and versions.
How it works¶
nexxcite keeps a permanent connection (WebSocket) between every open tab and the server. Over this connection, browser and server regularly send each other a sign of life:
- The server sends a sign of life to the browser about every 15 seconds.
- The browser sends a sign of life to the server about every 15 seconds.
- If the server hears nothing from the browser for 30 seconds, it considers the connection lost.
The server does not learn whether a tab is in the foreground or in the background. Browsers do not report this to websites. The server only sees whether signs of life arrive. A dropped connection and a sleeping tab look the same to it.
The browser's sign of life is triggered by a timer in the browser. Modern browsers slow down exactly these timers in background tabs to save battery, processor and memory. If they are slowed down enough or stopped altogether, the sign of life is missing and the server ends the connection.
This has nothing to do with the number of concurrent network connections of the browser. The well-known limit of a few concurrent connections per website applies to ordinary page requests, not to WebSocket connections. What matters are the power and memory saving features.
How browsers handle background tabs¶
The behaviour changes with new browser versions. The following overview describes the basic mechanisms. For binding statements about a specific version, refer to the documentation of the browser vendor.
| Browser | Behaviour in the background | Effect on the connection to nexxcite |
|---|---|---|
| Google Chrome | Timers in the background run at most once per second. After about 5 minutes in the background, recurring timers are additionally slowed down to about once per minute ("intensive throttling"). The memory saving feature ("Memory Saver") can also unload inactive tabs entirely. | After about 5 minutes in the background, the connection may be ended because the signs of life become too rare. An unloaded tab ends the connection immediately. |
| Microsoft Edge | The same mechanisms as Chrome. In addition, "Sleeping tabs" puts inactive tabs to sleep after a configurable time. | Same as Chrome. A sleeping tab ends the connection. |
| Mozilla Firefox | Also slows down timers in background tabs. Tabs can be unloaded when memory runs low. | The connection may be ended, in our assessment less often than with Chrome and Edge. |
| Apple Safari (macOS) | Slows down background tabs strongly and can suspend them, especially on battery. | The connection may be ended. |
| Mobile browsers (iOS, Android) | When the user switches to another app or locks the device, the system usually suspends the web page after a short time. | The connection is usually ended after a short time. |
What this means for licensing¶
For license usage this is rather favourable: tabs that are left unattended in the background for a long time often release their license on their own. You cannot rely on this, though.
For the user, it has consequences as soon as they return to such a tab:
- Within about 3 minutes after the connection was ended: nexxcite reconnects automatically, and the user continues without loss.
- Later: The old session no longer exists. The page reloads and takes a new license.
- If a license is free, the user continues normally after the reload.
- If all licenses are in use, they see the waiting screen (section 4).
- Input in this tab that has not been saved is lost.
If the user still has another, active nexxcite tab open, their license is kept. In this case there is no waiting screen.
Recommendations¶
For users
- Sign out after work or close the nexxcite tabs. The license is then released immediately and not only after minutes.
- Save your input before leaving a nexxcite tab in the background for a longer time.
For administrators
- Plan a buffer: A user whose connection dropped keeps their license for about 3.5 minutes. With a tight number of licenses, this can lead to short waiting times.
- Secure important users: Users who must be able to sign in at any time get a reserved license (section 3).
- Keep background tabs active on purpose (optional): In managed environments, a group policy can exempt the nexxcite address from the browser's saving features. Background tabs then keep their connection, but also keep their license longer. Relevant policies are, for example:
- Microsoft Edge:
SleepingTabsBlockedForUrls(exceptions from "Sleeping tabs") - Google Chrome:
TabDiscardingExceptions(exceptions from unloading tabs) andIntensiveWakeUpThrottlingEnabled(intensive throttling)
Please check the names and effects of these policies against the documentation of the browser version used in your organisation. - Monitor usage: see section 7.
7. Monitoring license usage¶
| Where | What |
|---|---|
| Admin Studio → System → License | Content of the license key (licensee, term, users, modules), current usage, all signed-in users with the kind of license (pool, reserved, license free), the number of their sessions and servers, reserved users, history of the last 30 days |
| Admin Studio → Monitoring → Servers | Tile "Licenses" with the current usage. Section "History" with charts of license usage, licensed users per server, CPU, memory, sessions, database response time and actions over 24 hours up to 90 days |
| Admin Studio → header | Notice when the license or an additional module expires within 30 days. Red notice when there is no valid license. |
| About dialog | "Licensed for |
The page System → License requires the permission "View License". By default, only system administrators have it.
8. Settings for operation¶
The following values are set in the configuration of the application (appsettings.json). What the
license allows is stated only in the license key and cannot be changed here.
| Setting | Default | Meaning |
|---|---|---|
Licensing:ExpiryWarningDays |
30 | Days before the end of the license or a module from which the Admin Studio warns |
Licensing:SeatRetrySeconds |
30 | Interval of the automatic attempts on the waiting screen |
Licensing:StateRefreshSeconds |
30 | Further servers pick up a new license key at the latest after this time |
ExecutionHistory:ServerLostAfterMinutes |
10 | After this time without a sign of life, a server is considered failed. Its licenses are released afterwards. |
ExecutionHistory:HousekeepingIntervalMinutes |
5 | Interval of the clean-up (failed servers, expired API access) |
ExecutionHistory:MetricsSnapshotIntervalMinutes |
5 | Interval in which every server stores its figures for the history charts |
ExecutionHistory:MetricsRetentionDays |
90 | How long the history is kept |
9. Frequently asked questions¶
A user works with two browsers at the same time. Do they take two licenses? No. A user always takes exactly one license.
A user closed their laptop. When is their license free? After about 3.5 minutes. If they open the laptop again within about 3 minutes, they continue without loss.
A user sees the waiting screen although the license page shows free licenses. The waiting screen checks again every 30 seconds. "Try now" starts the check immediately. Also check whether reserved licenses reduce the available licenses (section 3).
Can an administrator release a license immediately? Yes, by ending the user's sessions in the Admin Studio (Authenticated Users or User Sessions).
Are administrators preferred when all licenses are in use? No. If an administrator must be able to sign in at any time, give them a reserved license.
What happens to running background processes when the license expires? Scheduled actions and mailbox listeners keep running. Access through the browser and the REST API is locked.
We run several servers. Is the license counted per server? No. The license applies to the whole installation. All servers share the same licenses, and every license is handed out only once.