deepstream.io

deepstream.io server

MIT License

Downloads
542
Stars
7.1K
Committers
39

Bot releases are hidden (Show)

deepstream.io -

Published by yasserf over 7 years ago

[2.2.0] - 2017.04.08

Enhancements

  • Records now can be set with a version -1, which ignores version conflicts by datasage
  • Delete events are now propagated in the correct order by datasage
  • You can now request the HEAD of a record to retrieve just its version number by datasage
  • Providers for listeners are now by default selected randomly instead of in order of subscription
  • Ensure record updates are not scalar values before trying to save them in cache by datasage
  • Long lived RPC requests now use dynamic lookups for providers rather than building the Set upfront by [ronag]{ronag}
  • Huge optimization to subscription registry, where the time for registering a subscriber has been reduced from n^2 to O(n log n)

Miscellaneous

  • Deleting grunt since everything is script based
deepstream.io - Removing uws npm dependency

Published by AlexBHarley over 7 years ago

[2.1.6] - 2017.03.29

Miscellaneous

  • Due to uws releases being pulled from NPM, we're now using uws from a git repo
  • Created a separate repo uws-dependency with binaries.

[2.1.4 - 2.1.5]

  • Due to problems with build resulting from uws unpublishing, these two npm packages
    have been unpublished (noop)
deepstream.io - v2.1.4

Published by yasserf over 7 years ago

Release description

deepstream.io - [2.1.3] - 2017.02.25

Published by AlexBHarley over 7 years ago

Bug Fixes

  • Unsolicitated message in Listening when all clients unsubscribe #531
  • Handle Non text based websocket frame #538
  • Aligning binary config with node #488
  • Event subscription data mishandled in Valve #510
  • Logging after logger is destroyed #527
  • Deepstream crash on empty users file #512
  • Logging error object instead of name in connection error #420

Enhancements

  • maxRuleIterations must be 1 or higher #498
  • Ignore sender in subscriptionRegistry if messagebus #473
  • Removing dead config options #488
  • getAlternativeProvider in RPC Handler deals with more edge cases #566
  • Update UWS build version to 0.12
  • Packages built against node 6.10
deepstream.io - Maintenance Release

Published by AlexBHarley almost 8 years ago

[2.1.2] - 2016.12.28

Bug fixes

  • Fixing write error where only first value is written to storage #517
deepstream.io - Maintenance release

Published by yasserf almost 8 years ago

[2.1.1] - 2016.12.28

Bug fixes

  • Valve cross referencing in both a create and read results in a ack timeout #514
deepstream.io - Record write acknowledgements

Published by AlexBHarley almost 8 years ago

[2.1.0] - 2016.12.20

Features

  • Record write acknowledgement. Records are now able to be set with an optional callback which will be called with any errors from storing the record in cache/storage #472

Enhancements

  • Applying an ESLint rule set to the repo #482
  • Stricter valve permissioning language checks #486 by @Iiridayn
  • Update uWS version to v0.12.0

Bug fixes

  • Better handling/parsing of authentication messages #463
  • Properly returning handshake data (headers) from SocketWrapper #450
  • Fix case where CLIENT_DISCONNECTED is not sent from SocketWrapper #470
  • Fixed issue where listen does not recover from server restart #476
  • Handling presence events properly. Now when a user logs in, subscribed clients are only notified the first time the user logs in, and the last time they log out #499
deepstream.io - v2.0.1

Published by yasserf almost 8 years ago

[2.0.1] - 2016.11.21

Bug Fixes

  • Fixed issue where connectionData was not available in auth requests
    #450
deepstream.io - https://github.com/deepstreamIO/deepstream.io/releases/tag/v1.2.0-rc.1

Published by yasserf almost 8 years ago

deepstream.io - https://github.com/deepstreamIO/deepstream.io/releases/tag/v1.2.0-beta.1

Published by yasserf almost 8 years ago

deepstream.io - v2.0.0

Published by jdmnd almost 8 years ago

[2.0.0] - 2016.11.18

Features

  • User presence has been added, enabling querying and subscription to who is
    online within a cluster
  • Introduces the configuration option broadcastTimeout to config.yml to allow coalescing of
    broadcasts. This option can be used to improve broadcast message latency such
    as events, data-sync and presence
    For example, the perfomance of broadcasting 100 events to 1000 subscribers
    was improved by a factor of 20
  • Adds client heartbeats, along with configuration optionheartbeatInterval in config.yml.
    If a connected client fails to send a heartbeat within this timeout, it will be
    considered to have disconnected #419
  • Adds healthchecks – deepstream now responds to http GET requests to path
    /health-check on port 80 with code 200. This path can be configured with
    the healthCheckPath option in config.yml

Enhancements

  • E2E tests refactored
  • uWS is now compiled into the deepstream binary, eliminating reliability
    issues caused by dynamic linking

Breaking Changes

  • Clients prior to v2.0.0 are no longer compatible
  • Changed format of RPC request ACK messages to be more consistent with the
    rest of the specs
    #408
  • We removed support for TCP and engine.io, providing huge perfomance gains by
    integrating tightly with native uWS
  • Support for webRTC has been removed
  • You can no longer set custom data transforms directly on deepstream
deepstream.io - v2.0.0 Release Candidate 1

Published by jdmnd almost 8 years ago

Enhancements

  • Added heartbeats using uWS #419
  • Presence has been added to query and subscribe to who is online with the cluster
  • E2E tests refactored
  • uWS is now compiled into the deepstream binary, eliminating reliability issues caused by
    dynamic linking

Breaking Changes

  • Clients prior to v2.0.0 are no longer compatible
  • Changed format of RPC request ACK messages to be more consistent with the rest of the specs
    #408
  • We now depend only on uWS for websockets, removing support for TCP and engine.io
  • Support for webRTC has been removed
  • You can no longer set custom data transforms on deepstream
deepstream.io - https://github.com/deepstreamIO/deepstream.io/releases/tag/v1.1.2

Published by yasserf almost 8 years ago

deepstream.io - RPC Cluster Enhancements

Published by yasserf about 8 years ago

RPC Cluster Enhancements, using the distributed state registry

Changelog can be found here

deepstream.io - Smart Listening

Published by yasserf about 8 years ago

Smart listening, giving you much more granular control over your micro-service infrastructure.

Changelog can be found here

deepstream.io -

Published by yasserf about 8 years ago

[1.0.4] - 2016-08-16

Bug Fixes

  • Auth: File authentication sends server data to client on cleartext passwords #322
  • Auth: HTTP authentication missing logger during when attempting to log any errors occured on http server #320
deepstream.io -

Published by yasserf about 8 years ago

[1.0.3] - 2016-07-28

Bug Fixes

  • CLI: installer for connectors sometimes fail to download (and extract) the archive #305
  • Auth: File authentication doesn't contain serverData and clientData #304
Read data using FileAuthentication using clientData and serverData rather than data
userA:
  password: tsA+yfWGoEk9uEU/GX1JokkzteayLj6YFTwmraQrO7k=75KQ2Mzm
  serverData:
    role: admin
  clientData:
    nickname: Dave

Features

Make unauthenticated connections timeout

Users can now provide a unauthenticatedClientTimeout config option that forces connections to close if they don't authenticate in time.
This helps reduce load on server by terminating idle connections.

  • null: Disable timeout
  • number: Time in milliseconds before connection is terminated
deepstream.io -

Published by yasserf over 8 years ago

Bug Fixes

  • Fixed issue regarding last subscription to a deleted record not being cleared up
deepstream.io -

Published by yasserf over 8 years ago

Bug Fixes

  • Fix issue when try to pass options to the default logger #288 (update docs as well)
  • Fix issue deleting a record does not unsubscribe it and all other connections, not allowing resubscriptions to occur #293

Enhancements

Throw better error if dependency doesn't implement Emitter or isReady
deepstream.io - v1.0.0

Published by yasserf over 8 years ago

Features

CLI

You can start deepstream via a command line interface. You find it in the bin directory. It provides these subcommands:

  • start
  • stop
  • status
  • install
  • info
  • hash
    append a --help to see the usage.
File based configuration

You can now use a file based configuration instead of setting options via ds.set(key, value).
deepstream is shipped with a conf directory which contains three files:

  • config.yml this is the main config file, you can specify most of the deepstream options in that file
  • permissions.yml this file can be consumed by the PermissionHandler. It's not used by default, but you can enable it in the config.yml
  • users.yml this file can be consumed by the AuthenticationHandler. It's not used by default, but you can enable it in the config.yml

For all config types support these file types: .yml, .json and .js

Constructor API

There are different options what you can pass:

  • not passing any arguments ( consistent with 0.x )
  • passing null will result in loading the default configuration file in the directory conf/config.yml
  • passing a string which is a path to a configuration file, supported formats: .yml, .json and .js
  • passing an object which defines several options, all other options will be merged from deepstream's default values
Valve permissions rules

You can write your permission into a structured file. This file supports a special syntax, which allows you to do advanced permission checks. This syntax is called Valve.

Enhancements

uws

deepstream now uses uws, a native C++ websocket server

no process.exit on plugin initialization error or timeout

deepstream will not longer stops your process via process.exit(). This happened before when a connector failed to initialise correctly #243 instead it will throw an error now.

Currently the API provides no event or callback to handle this error
other than subscribing to the global uncaughtException event.

process.once('uncaughtException', err => {
  // err.code will equal to of these constant values:
  // C.EVENT.PLUGIN_INITIALIZATION_TIMEOUT
  // or C.EVENT.PLUGIN_INITIALIZATION_ERROR
})

Keep in mind that deepstream will be in an unpredictable state and you should consider to create a new instance.

Breaking Changes

Permission Handler

In 0.x you can set a permissionHandler which needs to implement two functions:

  • isValidUser(connectionData, authData, callback)
  • canPerformAction(username, message, callback)

In deepstream 1.0 the isValidUser and onClientDisconnect methods are no longer part of the permissionHandler and are instead within the new authenticationHandler.

You can reuse the same 0.x permission handler except you will have to set it on both explicitly.

const permissionHandler = new CustomPermissionHandler()
ds.set( 'permissionHandler', permissionHandler )
ds.set( 'authenticationHandler', permissionHandler )
Plugin API

All connectors including, the permissionHandler, authenticationHandler and logger all need to implement the plugin interface which means exporting an object that:

  • has a constructor
  • has an isReady property which is true once the connector has been initialized. For example in the case a database connector this would only be true once the connection has been established. If the connector is synchronous you can set this to true within the constructor.
  • extends the EventEmitter, and emits a ready event once initialized and error on error.
Logger and colors options

The color flag can't be set in the root level of the configuration anymore.
The default logger will print logs to the StdOut/StdErr in colors.
You can use the deepstream.io-logger-winston which can be configured in the config.yml file with several options.

Connection redirects

deepstream clients now have a handshake protocol which allows them to be redirected to the most efficient node and expect an initial connection ack before logging in. As such In order to connect a client to deepstream server you need also to have a client with version 1.0 or higher.

More details in the client changelog.