Next-gen, Pusher-compatible, open-source WebSockets server. Simple, fast, and resilient. 📣
AGPL-3.0 License
Bot releases are visible (Hide)
Published by rennokki almost 3 years ago
Fixed releases for Docker
Published by rennokki almost 3 years ago
filters
in the webhook configuration to filter the webhooks based on channel name (https://github.com/soketi/soketi/pull/223, @stayallive)With the Cluster driver, deploying multiple node workers with PM2 is going to be easier since Redis will no longer be needed.
Alongside this adapter, you should also decide to use the cluster
rate limiter driver in case you have rate limiting in place. This is going to scale the rate-limiting across all known processes.
The Redis adapter code was really messy, so I decided to come with an approach that will make future horizontal-scaling adapters easier. This required a lot of time, a lot of testing, and ideas to better improve the current code. Squashing ~ 800 lines of code, most of them coming from the code for the Redis adapter.
With this PR, PM2 is easier to use thanks to the cluster mode.
Graceful Shutdown Time is a fancy term for giving the soketi process enough time to shut down all the current connections and redirect users to other processes, before shutting the process itself. This is useful for horizontal scaling, and this time is arbitrarily given. Default is 3000 ms (3s), but you are now free to customize it by giving more time (or less) for your needs with the SHUTDOWN_GRACE_PERIOD
, a value in milliseconds.
Adapters and rate limiters now also got a softer close for the active, like closing the Redis sockets at the very end, when the server is closing.
clear()
method that makes sure it disconnects every socket from the instance was not a Promise, making it hard to predict whether all the sockets were closed in a soft mannerPublished by rennokki almost 3 years ago
This Log4j issue is not a security concern.
For DynamoDB testing, soketi uses DynamoDbLocal. This server comes with additional files for it, including Log4j, which recently has been exposed to have an RCE vulnerability. DynamoDBLocal uses Log4j, that is committed to the repo so it could work starting it.
Docker seems to be adding these files, but later on, it removes them in the process of building the final Docker image. However, they still can be tracked in the Docker image layers' trace.
To avoid false positives from automatic RCE checkers, they are removed from being added in the context entirely. With the current fixes, they should be ignored and not take part in the Docker build context, alongside other obsolete files like the benchmark folder, thus lowering the final Docker image too.
Published by rennokki almost 3 years ago
1.57.3
to fix known issues(https://github.com/soketi/soketi/pull/206, https://github.com/soketi/soketi/issues/205)Published by rennokki almost 3 years ago
Published by rennokki almost 3 years ago
Published by rennokki almost 3 years ago
Published by rennokki almost 3 years ago
Published by rennokki almost 3 years ago
member_added
is no longer broadcasted multiple times. When leaving, member_removed
is triggered only when the last connection of that user closes. Having multiple tabs/devices connected at the same time still count against the maximum connection numbers. You may fix this by using service workers (as explained here) (https://github.com/soketi/soketi/pull/19, @jsandfordhughes, @audiojames)Published by rennokki almost 3 years ago
Uncommitted package-lock.json
Published by rennokki almost 3 years ago
This may be a breaking change if you are using Prometheus metrics or you are using the Node.js 14.x image for Docker. (https://github.com/soketi/soketi/pull/157)
Please read the new documentation: https://rennokki.gitbook.io/soketi-docs/advanced-usage/scraping-prometheus-metrics
/metrics
and /usage
endpoints to 6001
(which is public) was a bad idea in terms of security. Starting with this version, the server will run the metrics to a different port (9601
) which may not be exposed to the internet. This way, you can run the Prometheus Scrape service within your server or in your private network.Published by rennokki almost 3 years ago
Published by rennokki almost 3 years ago
Coming soon:
WebSocket
instance to make the server get the app secret on the webhook sending process and on HTTP requests instead of passing it to the WebSocket
instance (https://github.com/soketi/soketi/pull/153, reverted in https://github.com/soketi/soketi/commit/8148eb9c5476d0ccbdcd6bca6f15e88477078a0a). It was reverted as this can lead to throttles if your app manager is other than array
, as it will query the app manager on each webhook and private channel connection. Currently investigating a better way to do this.Published by rennokki almost 3 years ago
Published by rennokki almost 3 years ago
APP_MANAGER_MYSQL_USE_V2
environment variable (https://github.com/soketi/soketi/pull/146)Published by rennokki almost 3 years ago
Published by rennokki almost 3 years ago
Published by rennokki almost 3 years ago
You can still use resources for the pre-0.13
version as they were left intact.
quay.io/soketi/soketi
, and you can only use it with the 0.13
+ tagsoketi start
SOKETI_
(previously: PWS_
)soketi_
(previously: pws_
)SoketiWebhooksAxiosClient/1.0
agentPublished by rennokki almost 3 years ago
Published by rennokki almost 3 years ago
246.6 MB
to 138.0 MB
aws-sdk
in favor of @aws-sdk/client-dynamodb
as a lighter dependency