All client SDK's can emit or throw errors. General errors are emitted by the client instance, specific errors are emitted by the object that encountered them, e.g. MESSAGE_DENIED
by the record that attempted a forbidden operation.
Authentication and Connectivity
CONNECTION_ERROR
Thrown once the connectionState changes to a final ERROR
state. (Learn more about connectivity issues)
MAX_RECONNECTION_ATTEMPTS_REACHED
The client has attempted to recover the connection too many times and is now giving up. Learn more about configuring
CONNECTION_AUTHENTICATION_TIMEOUT
To prevent distributed denial of service (DDOS) attacks, deepstreamHub will cut unauthenticated connections after a certain time, resulting in this error.
TOO_MANY_AUTH_ATTEMPTS
To prevent rainbow table / brute force attacks deepstreamHub limits client's to three unsuccessful authentication attempts before the connection is cut. That does NOT mean however that your users need to be limited to three attempts - however you will need to establish a new client connection after the third unsuccessful attempt
NOT_AUTHENTICATED
The deepstreamHub client SDKs can be used before the connection is authenticated - in which case they'll use the same internal message queue that is used to counteract connection losses. If the connection isn't authenticated in time though this might lead to a NOT_AUTHENTICATED error. Generally, if you're not using an open connection we'd recommend initialising your application only after successful authentication.
MESSAGE_DENIED
This error occurs when an operation is denied by the Valve permission check.
Record & RPC
RECORD_NOT_FOUND
This will be passed to record snapshot requests if the record doesn't exist. Please note that getRecord()
will create the record if it doesn't exist rather than throw an error. It is possible to check if a record exists using ds.record.has()
.
NO_RPC_PROVIDER
This error happens when a client attempts to make a remote procedure call for which no provider can be found. This can either mean that no providers are registered for a given RPC or that all registered providers choose to reject the request.
VERSION_EXISTS
During data-conflicts, e.g. when two clients write to the same record at the same time, deepstream will invoke a merge routine. If this routine however errors or remains inconclusive, the above error is thrown.
Timeouts
ACK_TIMEOUT
Numerous operations (subscribing to events, requesting records etc.) will be acknowledged by deepstreamHub. If this acknowledgement hasn't happened in time, an ACK_TIMEOUT
error will be thrown. **This doesn't mean the operation failed, especially for bulk operations its still possible that the ACK
message arrives a bit later. For these cases we recommend setting a higher timeout in the client options
RESPONSE_TIMEOUT
Occurs when the response for an RPC doesn't arrive within a given time.
DELETE_TIMEOUT
Occurs when the confirmation that a record was successfully deleted doesn't arrive within a given time
Internal
UNSOLICITED_MESSAGE
The client received a message it didn't ask for, e.g. an update for a record it's not subscribed to. This can be the result of a race condition, e.g. when requesting and discarding records in quick succession and can usually be safely ignored.
MESSAGE_PARSE_ERROR
The client received a syntactically incorrect message