soketi is your simple, fast, and resilient open-source WebSockets server

Overview

soketi

CI codecov Latest Stable Version Total Downloads License

soketi is your simple, fast, and resilient open-source WebSockets server. πŸ“£

Blazing fast speed ⚑

The server is built on top of uWebSockets.js - a C application ported to Node.js. uWebSockets.js is demonstrated to perform at levels 8.5x that of Fastify and at least 10x that of Socket.IO. (source)

Cheaper than most competitors πŸ€‘

Compared with Pusher, you can achieve much more for one-third of the price. For a $49 plan on Pusher, you get a limited amount of connections (500) and messages (30M). With soketi, for ~ $15, you get virtually unlimited connections, messages, and some more!

This is because you pay only for your infrastructure. Whether it's your basement server or cloud, it fits and runs. You can also get free $100 on Vultr to try out soketi β†’

Easy to use πŸ‘Ά

Whether you run your infrastructure in containers or monoliths, soketi got your back. There are multiple ways to install and configure soketi, from single instances for development, to tens of active instances at scale with hundreds or thousands of active users.

Pusher Protocol v7 πŸ“‘

soketi implements the Pusher Protocol v7. Therefore, any Pusher-maintained or compatible client can connect to it, bringing a plug-and-play experience for existing applications that are already compatible with this protocol.

App-based access πŸ”

You and your users can access the API and WebSockets through Pusher-like apps which serve keys and secrets to connect or authenticate requests for broadcasting events or checking channels statuses. soketi also comes built-in with support for DynamoDB and SQL-based servers like Postgres.

Production-ready! πŸ€–

In addition to being a good companion during local development, soketi comes with the resiliency and speed required for demanding production applications.

Built-in monitoring πŸ“ˆ

soketi just exposes the metrics to you, you just have to scrape them, whether it's a simple HTTP Client to pull the current usage, or you're using Prometheus to monitor all the connections.

🀝 Supporting

soketi is meant to be free, forever. Having a good companion for developing real-time applications locally and in production should not involve any third-party and having a reliable websocket server to deploy behind a firewall makes soketi a compelling option for many applications.

Of course, like many open source software solutions, development is done by investing volunteer time into the project. Therefore, all donations are greatly appreciated. You can sponsor the development via Github Sponsors.

πŸ“ƒ Documentation

The entire documentation is available on Gitbook 🌍

🀝 Contributing

Please see CONTRIBUTING for details.

⁉ Ideas or Discussions?

Have any ideas that can make into the project? Perhaps you have questions? Jump into the discussions board

πŸ”’ Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

πŸŽ‰ Credits

Comments
  • Soketi with Laravel in different domains

    Soketi with Laravel in different domains

    Soketi with Laravel Hello Guys,

    I'm trying to use real-time notifications using Soketi

    So I createg the Soketi server in one separeted server with nodejs on port 6001 and SSL using letsencrypt.

    Then I Created the notification

    Added the JS script to layout:

     Echo.private('App.User.' + {{Auth::id()}})
            .notification((data) => {
             console.log(data);
            });
    

    Added the this code compiled in layout too:

    import Echo from 'laravel-echo';
    window.Pusher = require('pusher-js');
    window.Echo = new Echo({
        broadcaster: 'pusher',
        key: process.env.MIX_PUSHER_APP_KEY,
        wsHost: process.env.MIX_PUSHER_HOST,
        wsPort: process.env.MIX_PUSHER_PORT,
        wssPort: process.env.MIX_PUSHER_PORT,
        forceTLS: false,
        encrypted: true,
        disableStats: true,
        enabledTransports: ['ws', 'wss'],
    });
    

    So when I was in development ambient the notifications cakes properly, sended by one server without SSL (http://sede.inoprime.com.br), but when I was on production server It not work and this server has SSL and its diferent from Soketi server. Application Laravel (https://trackerprime.inoprime.com.br) Soketi Server (https://servicos.inoprime.com.br)

    I found this two diferences when the aplications calls the websocket link: wss://servicos.inoprime.com.br:6001/app/app-key?protocol=7&client=js&version=7.0.6&flash=false

    In development the response is:

    {event: "pusher_internal:subscription_succeeded", channel: "private-App.User.1"}
    

    In Production I got:

    { "event": "pusher:connection_established", "data": "{"socket_id":"8565042074.5045547206","activity_timeout":30}" } Anyone have any idea what they might be getting?

    opened by felipesmendes 22
  • Install Error

    Install Error

    I'm getting this message when I try to install the package:

    npm install -g @soketi/soketi
    npm ERR! code 128
    npm ERR! An unknown git error occurred
    npm ERR! command git --no-replace-objects ls-remote ssh://[email protected]/uNetworking/uWebSockets.js.git
    npm ERR! command-line line 0: unsupported option "accept-new".
    npm ERR! fatal: Could not read from remote repository.
    npm ERR! 
    npm ERR! Please make sure you have the correct access rights
    npm ERR! and the repository exists.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /root/.npm/_logs/2021-12-13T18_15_10_616Z-debug-0.log
    

    Can someone help-me?

    opened by ricocrivelli 22
  • App key does not exist while using .env file

    App key does not exist while using .env file

    Laravel 8 Php 7.4 Ubuntu 20 Node v16.14.2

    Error

    {
       "event":"pusher:error",
       "data":{
          "code":4001,
          "message":"App key x9w3uyytpetqdwtq does not exist."
       }
    }
    

    If I hardcode the default app key in the bootstrap settings for Echo (to test), it finds the app but the problem then is with authorization:

    {
       "event":"pusher:subscription_error",
       "channel":"private-company.3603",
       "data":{
          "type":"AuthError",
          "error":"The connection is unauthorized.",
          "status":401
       }
    }
    

    .env

    PUSHER_APP_ID=1234567
    PUSHER_APP_KEY=x9w3uyytpetqdwtq
    PUSHER_APP_SECRET=r9uyqyyycupbuqga
    
    PUSHER_HOST=127.0.0.1
    PUSHER_PORT=6001
    MIX_PUSHER_HOST="${PUSHER_HOST}"
    MIX_PUSHER_PORT="${PUSHER_PORT}"
    DB_REDIS_HOST="${REDIS_HOST}"
    DB_REDIS_PORT="${REDIS_PORT}"
    DB_REDIS_PASSWORD="${REDIS_PASSWORD}"
    SOKETI_DEBUG=1
    DEFAULT_APP_ID="${PUSHER_APP_ID}"
    DEFAULT_APP_KEY="${PUSHER_APP_KEY}"
    DEFAULT_APP_SECRET="${PUSHER_APP_SECRET}"
    

    broadcasting.php

    'connections' => [
    
            'pusher' => [
                'driver'  => 'pusher',
                'key'     => env('PUSHER_APP_KEY', 'app-key'),
                'secret'  => env('PUSHER_APP_SECRET', 'app-secret'),
                'app_id'  => env('PUSHER_APP_ID', 'app-id'),
                'options' => [
                    //'cluster' => env('PUSHER_APP_CLUSTER'),
                    'host'      => env('PUSHER_HOST', '127.0.0.1'),
                    'port'      => env('PUSHER_PORT', 6001),
                    'scheme'    => env('PUSHER_SCHEME', 'http'),
                    'encrypted' => false, // TODO
                    'useTLS'    => 'https' === env('PUSHER_SCHEME'), // TODO
                ],
            ],
    

    bootstrap.js

    window.Echo = new Echo({
        broadcaster: 'pusher',
        key: process.env.MIX_PUSHER_APP_KEY,
        //cluster: process.env.MIX_PUSHER_APP_CLUSTER,
        forceTLS: false,
        disableStats: true,
        wsHost: window.location.hostname,
        wsPort: 6001,
        wssPort: 6001,
        enabledTransports: ['ws', 'wss'],
        authorizer: (channel, options) => {
            return {
                authorize: (socketId, callback) => {
                    axios.post('/broadcasting/auth', {
                        socket_id: socketId,
    ...
    

    welcome.blade.php

    ...
    <script src="{{ asset('js/app.js') }}"></script>
        <script>
            Echo.private('company.3603')
            .listen('.import-progress-updated', (e) => {
                console.log(e.percentComplete);
            });
        </script>
    
    opened by erickneverson 12
  • How to add a config file with the supervisor?

    How to add a config file with the supervisor?

    I want to add a config file with a config argument using the supervisor. I created "soketi.conf" and I defined a path using config argument then I executed "sudo supervisorctl start soketi:*" command, but it did not work and throw an error soketi:soketi_00: ERROR (no such file)"

    [program:soketi]
    process_name=%(program_name)s_%(process_num)02d
    command=soketi start --config="/home/ubuntu/soketi/config.json"
    autostart=true
    autorestart=true
    stopasgroup=true
    killasgroup=true
    user=ubuntu
    numprocs=1
    redirect_stderr=true
    stdout_logfile=/var/log/soketi-supervisor.log
    stopwaitsecs=60
    stopsignal=sigint
    minfds=10240
    
    opened by hsndmr 11
  • Pusher Client uses SockJS and XHR polling when the connection fails

    Pusher Client uses SockJS and XHR polling when the connection fails

    When using the recommended pusher-js client library to connect to your Soketi server and at some point the connection is timed out or closed (by the client it seems), the pusher-js library will ignore the configured host and infinitely try to reconnect to official pusher hosts until you refresh the page. An example url looks like: https://sockjs-mt1.pusher.com/pusher/app/app-key/793/34vlfh0e/xhr_streaming?protocol=7&client=js&version=7.0.3&t=1646658213555&n=17

    Is there a known or recommended way to force pusher-js to use your configured host for retries? My client side config looks like this (using laravel-echo with pusher driver):

    new Echo({
        broadcaster: "pusher",
        key: "app-key",
        cluster: "mt1",
        forceTLS: true,
        wsHost: "ws.myserver.io",
    });
    
    enhancement 
    opened by elbojoloco 10
  • [bug] `client.moveToActive is not a function` when using the Redis queue driver

    [bug] `client.moveToActive is not a function` when using the Redis queue driver

    My .env:

    APP_MANAGER_DRIVER=mysql
    
    DB_MYSQL_USERNAME=soketi
    DB_MYSQL_PASSWORD=soketi
    DB_MYSQL_DATABASE=soketi
    
    SOKETI_DEBUG=1
    
    QUEUE_DRIVER=redis
    

    soketi version: @soketi/[email protected] redis version: 6.2.1 node version: v16.13.1

    I run soketi start in the directory of the above .env and this is my output (stuck in infinite loop it seems): image

    Everything works fine when disabling the redis queue driver. Any help with this?

    bug 
    opened by elbojoloco 10
  • Docker images not working as expected with SSL

    Docker images not working as expected with SSL

    We have just updated our docker images, we were stuck on the soketi/pws images for a while. After taking a look a the newer images located at quay.io/soketi/soketi i have noticed two issues.

    1. The images that are post-fixed with -alpine seem to have a segmentation fault and don't work at all. The seg fault happens as soon as you try to connect to the echo server from a frontend application.
    echo  |   πŸ“‘ soketi initialization....
    echo  |   ⚑ Initializing the HTTP API & Websockets Server...
    echo  |   ⚑ Initializing the Websocket listeners and channels...
    echo  |   ⚑ Initializing the HTTP webserver...
    echo  |   πŸ•΅οΈβ€β™‚οΈ Initiating metrics endpoints...
    echo  |
    echo  |    πŸŽ‰ Server is up and running!
    echo  |    πŸ“‘ The Websockets server is available at 127.0.0.1:6001
    echo  |    πŸ”— The HTTP API server is available at http://127.0.0.1:6001
    echo  |    🎊 The /usage endpoint is available on port 9601.
    echo  |
    echo  |    [Fri Apr 08 2022 04:30:25 GMT+0000 (Coordinated Universal Time)] Promoted from node to master.
    echo  |   [object Object]
    echo exited with code 139
    
    1. The images that are post-fixed with -distroless seem to no longer be generating since about 2 months ago (last one was 0.30.2-16-distroless). Its worth noting these images are recommended for production in the documentation. here: https://docs.soketi.app/getting-started/installation/docker

    I have confirmed that the distroless images do not have the seg fault and work fine. I have also confirmed the seg fault was not present in the older soketi/pws images.

    bug enhancement 
    opened by mattoz0 9
  • Cant subscribe to any channel in laravel

    Cant subscribe to any channel in laravel

    Echo config:

    import Echo from 'laravel-echo';
    
    window.Pusher = require('pusher-js');
    
    window.Echo = new Echo({
      broadcaster: 'pusher',
      key: process.env.MIX_PUSHER_APP_KEY,
      cluster: process.env.MIX_PUSHER_APP_CLUSTER,
      wsHost: process.env.MIX_PUSHER_HOST,
      wssHost: window.location.hostname,
      forceTLS: false,
      disableStats: false,
      wsPort: 6001,
      wssPort: 6001,
      encrypted: false,
        enabledTransports: ['ws','wss'],
    });
    
    

    broadcast config:

    'pusher' => [
                'driver' => 'pusher',
                'key' => env('PUSHER_APP_KEY','app-key'),
                'secret' => env('PUSHER_APP_SECRET','app-secret'),
                'app_id' => env('PUSHER_APP_ID','app-id'),
                'options' => [
                    'cluster' => env('PUSHER_APP_CLUSTER'),
                    'useTLS' => false,
                    'host' => '127.0.0.1',
                    'port' => 6001,
                    'scheme' => 'http',
                    'curl_options' => [
                        CURLOPT_SSL_VERIFYHOST => 0,
                        CURLOPT_SSL_VERIFYPEER => 0,
                    ]
                ],
            ],
    

    .env:

    PUSHER_APP_ID=13765167
    PUSHER_APP_KEY=2ca34f0bece55e7ec75feg
    PUSHER_APP_SECRET=79f129a2023ed59d5c30f3
    PUSHER_APP_CLUSTER=eu
    PUSHER_HOST=127.0.0.1
    PUSHER_PORT=6001
    
    SOKETI_DEBUG=1
    DEFAULT_APP_ENABLE_CLIENT_MESSAGES=true
    DEFAULT_APP_ID="${PUSHER_APP_ID}"
    DEFAULT_APP_KEY="${PUSHER_APP_KEY}"
    DEFAULT_APP_SECRET="${PUSHER_APP_SECRET}"
    
    MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
    MIX_PUSHER_HOST="${PUSHER_HOST}"
    MIX_PUSHER_PORT="${PUSHER_PORT}"
    

    Component where i listen:

      methods: {
        listenForComment() {
          Echo.private(`comment.${this.$page.props.auth.user.id}`).notification(
            (notification) => {
              this.$page.props.auth.notification_count++;
                this.notifications.unshift(notification);
              console.log(notification);
            }
          );
        },
        listenForRating() {
          Echo.private(\`rate.${this.$page.props.auth.user.id}\`).notification(
            
            (notification) => {
              console.log(notification);
              this.$page.props.auth.notification_count++;
                this.notifications.unshift(notification);
                
              console.log(notification);
            }
          );
        },
      },
      mounted() {
        this.listenForRating();
        this.listenForComment();
        
      },
    

    I can see the payload in the socketi tab,but I dont receive anything on the front end. It worked with laravel-websockets,what am I missing? Thanks for an awesome package.

    opened by micos7 9
  • Is there a way to include the CA Bundle with the SSL certs?

    Is there a way to include the CA Bundle with the SSL certs?

    When setting up SSL on our servers, we usually have to use the .crt file, the ca-bundle, and the .key. Following the documentation at https://rennokki.gitbook.io/soketi-docs/getting-started/ssl-configuration, I'm able to set the certificate and key and the server is running. We're using Laravel Echo and that can connect to the soketi server, but when using Laravel to broadcast an event through soketi, we get an error of: curl: (60) SSL certificate problem: unable to get local issuer certificate

    I'm thinking we need to also provide the ca-bundle somehow. We also get the error when we curl the web socket server. For example, curl https://my.site.com:6001.

    The Laravel broadcasting.php file is configured following the information here: https://rennokki.gitbook.io/soketi-docs/getting-started/backend-configuration/laravel-broadcasting. For the pusher/pusher-php-server package, we're using version 7.0.2.

    I was wondering if there was a way to include the ca-bundle or if there was another suggestion on what we could do. Thanks in advance!

    opened by oak-si 9
  • cURL error 60: SSL certificate: unable to get local issuer certificate

    cURL error 60: SSL certificate: unable to get local issuer certificate

    This issue popup's after upgrading Pusher, downgrading solves this issue:

    $ composer install
    Downgrading pusher/pusher-php-server (7.0.1 => 5.0.3): Extracting archive
    

    I'm using Soketi 0.20.0 on my LAN for testing, meaning the certificates are not signed by any issuer.

    This is a workaround I'm using on Pusher 5.0.3 to get around the self-signed issue (not recommend on production):

    // config/broadcasting.php
    'pusher' => [
                'driver' => 'pusher',
                'key' => env('PUSHER_APP_KEY', 'app-key'),
                'secret' => env('PUSHER_APP_SECRET', 'app-secret'),
                'app_id' => env('PUSHER_APP_ID', 'app-id'),
                'options' => [
                    'host' => env('PUSHER_HOST', '127.0.0.1'),
                    'port' => env('PUSHER_PORT', 6001),
                    'scheme' => env('PUSHER_SCHEME', 'http'),
                    'encrypted' => true,
                    'useTLS' => 'https' === env('PUSHER_SCHEME'),
                    'curl_options' => [
                        CURLOPT_SSL_VERIFYHOST => 0,
                        CURLOPT_SSL_VERIFYPEER => 0, // This doesn't seem to work anymore after upgrading?
                    ],
                ],
            ],
    

    Do you have any tips? :)

    Thanks!

    opened by francoism90 9
  • Error while use Soketi in production

    Error while use Soketi in production

    I just deployed Soketi on EC2 with all its things (SSL, config Nginx proxy and etc) and I got a response in my domain (OK) which returns from Soketi so I assume all things are just fine! the domain (realtime.my_doamin.co). I connected with the client side and the Network is: Screen Shot 2022-08-25 at 9 09 25 AM

    On the server-side I got a weird error:

    Pusher error:.
    

    Full error: https://ibb.co/FJpnKs2

    Here is the way I used it with Laravel:

    in .env file

    PUSHER_APP_KEY=app-key
    PUSHER_APP_ID=app-id
    PUSHER_APP_SECRET=app-secret
    PUSHER_HOST=realtime.my_doamin.co
    PUSHER_PORT=80
    

    in bootstrap.js file:

    window.Echo = new Echo({
        broadcaster: "pusher",
        key: "app-key",
        wsHost: "realtime.my_doamin.co",
        wsPort: 80,
        wssPort: 443,
        forceTLS: "https",
        enabledTransports: ["ws", "wss"],
    });
    
    window.Echo.channel("orders").listen("OrderStatusUpdated", (e) => {
        console.log(e);
    });
    

    In config/broadcasting.php file:

    'pusher' => [
                'driver' => 'pusher',
                'key' => env('PUSHER_APP_KEY', 'app-key'),
                'secret' => env('PUSHER_APP_SECRET', 'app-secret'),
                'app_id' => env('PUSHER_APP_ID', 'app-id'),
                'options' => [
                    'host' => env('PUSHER_HOST', '127.0.0.1'),
                    'port' => env('PUSHER_PORT', 6001),
                    'scheme' => env('PUSHER_SCHEME', 'http'),
                    'encrypted' => true,
                    'useTLS' => env('PUSHER_SCHEME', 'https') === 'https',
                ],
            ],
    

    In OrderStatusUpdated.php file:

    class OrderStatusUpdated implements ShouldBroadcast
    {
        use Dispatchable, InteractsWithSockets, SerializesModels;
    
        public function __construct(public $id)
        {
        }
    
        public function broadcastOn()
        {
            return new Channel('orders');
        }
    }
    

    in web.php file:

    class Order
    {
        public function __construct(public $id)
        {
        }
    }
    
    Route::get('/', function () {
        return view('welcome');
    });
    
    Route::get('/test', function () {
        OrderStatusUpdated::dispatch(new Order(1));
    
        return 'Event has been sent!';
    });
    

    I think there is a problem with SSL on the server side in the Laravel project.

    I used Certbot to install SSL for the Soketi server

    Here in docs SSL I did not do anything like it! Should I?

    opened by RabieAli95 8
  • Bump eslint from 8.27.0 to 8.31.0

    Bump eslint from 8.27.0 to 8.31.0

    Bumps eslint from 8.27.0 to 8.31.0.

    Release notes

    Sourced from eslint's releases.

    v8.31.0

    Features

    • 52c7c73 feat: check assignment patterns in no-underscore-dangle (#16693) (Milos Djermanovic)
    • b401cde feat: add options to check destructuring in no-underscore-dangle (#16006) (Morten Kaltoft)
    • 30d0daf feat: group properties with values in parentheses in key-spacing (#16677) (Francesco Trotta)

    Bug Fixes

    • 35439f1 fix: correct syntax error in prefer-arrow-callback autofix (#16722) (Francesco Trotta)
    • 87b2470 fix: new instance of FlatESLint should load latest config file version (#16608) (Milos Djermanovic)

    Documentation

    • 4339dc4 docs: Update README (GitHub Actions Bot)
    • 4e4049c docs: optimize code block structure (#16669) (Sam Chen)
    • 54a7ade docs: do not escape code blocks of formatters examples (#16719) (Sam Chen)
    • e5ecfef docs: Add function call example for no-undefined (#16712) (Elliot Huffman)
    • a3262f0 docs: Add mastodon link (#16638) (Amaresh S M)
    • a14ccf9 docs: clarify files property (#16709) (Sam Chen)
    • 3b29eb1 docs: fix npm link (#16710) (Abdullah Osama)
    • a638673 docs: fix search bar focus on Esc (#16700) (Shanmughapriyan S)
    • f62b722 docs: country flag missing in windows (#16698) (Shanmughapriyan S)
    • 4d27ec6 docs: display zh-hans in the docs language switcher (#16686) (Percy Ma)
    • 8bda20e docs: remove manually maintained anchors (#16685) (Percy Ma)
    • b68440f docs: User Guide Getting Started expansion (#16596) (Ben Perlmutter)

    Chores

    • 65d4e24 chore: Upgrade @​eslint/eslintrc@​1.4.1 (#16729) (Brandon Mills)
    • 8d93081 chore: fix CI failure (#16721) (Sam Chen)
    • 8f17247 chore: Set up automatic updating of README (#16717) (Nicholas C. Zakas)
    • 4cd87cb ci: bump actions/stale from 6 to 7 (#16713) (dependabot[bot])
    • fd20c75 chore: sort package.json scripts in alphabetical order (#16705) (Darius Dzien)
    • 10a5c78 chore: update ignore patterns in eslint.config.js (#16678) (Milos Djermanovic)

    v8.30.0

    Features

    • 075ef2c feat: add suggestion for no-return-await (#16637) (Daniel Bartholomae)
    • 7190d98 feat: update globals (#16654) (SΓ©bastien RΓ¨gne)

    Bug Fixes

    • 1a327aa fix: Ensure flat config unignores work consistently like eslintrc (#16579) (Nicholas C. Zakas)
    • 9b8bb72 fix: autofix recursive functions in no-var (#16611) (Milos Djermanovic)

    Documentation

    • 6a8cd94 docs: Clarify Discord info in issue template config (#16663) (Nicholas C. Zakas)
    • ad44344 docs: CLI documentation standardization (#16563) (Ben Perlmutter)
    • 293573e docs: fix broken line numbers (#16606) (Sam Chen)
    • fa2c64b docs: use relative links for internal links (#16631) (Percy Ma)
    • 75276c9 docs: reorder options in no-unused-vars (#16625) (Milos Djermanovic)
    • 7276fe5 docs: Fix anchor in URL (#16628) (Karl Horky)
    • 6bef135 docs: don't apply layouts to html formatter example (#16591) (Tanuj Kanti)
    • dfc7ec1 docs: Formatters page updates (#16566) (Ben Perlmutter)

    ... (truncated)

    Changelog

    Sourced from eslint's changelog.

    v8.31.0 - December 31, 2022

    • 65d4e24 chore: Upgrade @​eslint/eslintrc@​1.4.1 (#16729) (Brandon Mills)
    • 35439f1 fix: correct syntax error in prefer-arrow-callback autofix (#16722) (Francesco Trotta)
    • 87b2470 fix: new instance of FlatESLint should load latest config file version (#16608) (Milos Djermanovic)
    • 8d93081 chore: fix CI failure (#16721) (Sam Chen)
    • 4339dc4 docs: Update README (GitHub Actions Bot)
    • 8f17247 chore: Set up automatic updating of README (#16717) (Nicholas C. Zakas)
    • 4e4049c docs: optimize code block structure (#16669) (Sam Chen)
    • 54a7ade docs: do not escape code blocks of formatters examples (#16719) (Sam Chen)
    • 52c7c73 feat: check assignment patterns in no-underscore-dangle (#16693) (Milos Djermanovic)
    • e5ecfef docs: Add function call example for no-undefined (#16712) (Elliot Huffman)
    • a3262f0 docs: Add mastodon link (#16638) (Amaresh S M)
    • 4cd87cb ci: bump actions/stale from 6 to 7 (#16713) (dependabot[bot])
    • a14ccf9 docs: clarify files property (#16709) (Sam Chen)
    • 3b29eb1 docs: fix npm link (#16710) (Abdullah Osama)
    • fd20c75 chore: sort package.json scripts in alphabetical order (#16705) (Darius Dzien)
    • a638673 docs: fix search bar focus on Esc (#16700) (Shanmughapriyan S)
    • f62b722 docs: country flag missing in windows (#16698) (Shanmughapriyan S)
    • 4d27ec6 docs: display zh-hans in the docs language switcher (#16686) (Percy Ma)
    • 8bda20e docs: remove manually maintained anchors (#16685) (Percy Ma)
    • b401cde feat: add options to check destructuring in no-underscore-dangle (#16006) (Morten Kaltoft)
    • b68440f docs: User Guide Getting Started expansion (#16596) (Ben Perlmutter)
    • 30d0daf feat: group properties with values in parentheses in key-spacing (#16677) (Francesco Trotta)
    • 10a5c78 chore: update ignore patterns in eslint.config.js (#16678) (Milos Djermanovic)

    v8.30.0 - December 16, 2022

    • f2c4737 chore: upgrade @​eslint/eslintrc@​1.4.0 (#16675) (Milos Djermanovic)
    • 1a327aa fix: Ensure flat config unignores work consistently like eslintrc (#16579) (Nicholas C. Zakas)
    • 075ef2c feat: add suggestion for no-return-await (#16637) (Daniel Bartholomae)
    • ba74253 chore: standardize npm script names per #14827 (#16315) (Patrick McElhaney)
    • 6a8cd94 docs: Clarify Discord info in issue template config (#16663) (Nicholas C. Zakas)
    • 0d9af4c ci: fix npm v9 problem with file: (#16664) (Milos Djermanovic)
    • 7190d98 feat: update globals (#16654) (SΓ©bastien RΓ¨gne)
    • ad44344 docs: CLI documentation standardization (#16563) (Ben Perlmutter)
    • 90c9219 refactor: migrate off deprecated function-style rules in all tests (#16618) (Bryan Mishkin)
    • 9b8bb72 fix: autofix recursive functions in no-var (#16611) (Milos Djermanovic)
    • 293573e docs: fix broken line numbers (#16606) (Sam Chen)
    • fa2c64b docs: use relative links for internal links (#16631) (Percy Ma)
    • 75276c9 docs: reorder options in no-unused-vars (#16625) (Milos Djermanovic)
    • 7276fe5 docs: Fix anchor in URL (#16628) (Karl Horky)
    • 6bef135 docs: don't apply layouts to html formatter example (#16591) (Tanuj Kanti)
    • dfc7ec1 docs: Formatters page updates (#16566) (Ben Perlmutter)
    • 8ba124c docs: update the prefer-const example (#16607) (Pavel)
    • e6cb05a docs: fix css leaking (#16603) (Sam Chen)

    v8.29.0 - December 2, 2022

    • 0311d81 docs: Configuring Plugins page intro, page tweaks, and rename (#16534) (Ben Perlmutter)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 1
  • Bump actions/cache from 3.0.4 to 3.2.2

    Bump actions/cache from 3.0.4 to 3.2.2

    Bumps actions/cache from 3.0.4 to 3.2.2.

    Release notes

    Sourced from actions/cache's releases.

    v3.2.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/cache/compare/v3.2.1...v3.2.2

    v3.2.1

    What's Changed

    Full Changelog: https://github.com/actions/cache/compare/v3.2.0...v3.2.1

    v3.2.0

    What's Changed

    New Contributors

    ... (truncated)

    Changelog

    Sourced from actions/cache's changelog.

    3.2.2

    • Reverted the changes made in 3.2.1 to use gnu tar and zstd by default on windows.
    Commits
    • 4723a57 Revert compression changes related to windows but keep version logging (#1049)
    • d1507cc Merge pull request #1042 from me-and/correct-readme-re-windows
    • 3337563 Merge branch 'main' into correct-readme-re-windows
    • 60c7666 save/README.md: Fix typo in example (#1040)
    • b053f2b Fix formatting error in restore/README.md (#1044)
    • 501277c README.md: remove outdated Windows cache tip link
    • c1a5de8 Upgrade codeql to v2 (#1023)
    • 9b0be58 Release compression related changes for windows (#1039)
    • c17f4bf GA for granular cache (#1035)
    • ac25611 docs: fix an invalid link in workarounds.md (#929)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 1
  • Bump bullmq from 1.91.1 to 3.5.1

    Bump bullmq from 1.91.1 to 3.5.1

    Bumps bullmq from 1.91.1 to 3.5.1.

    Release notes

    Sourced from bullmq's releases.

    v3.5.1

    3.5.1 (2022-12-23)

    Bug Fixes

    • connection: throw exception if using keyPrefix in ioredis (eb6a130)
    • connection: use includes to check for upstash more reliably (12efb5c)

    v3.5.0

    3.5.0 (2022-12-20)

    Bug Fixes

    Features

    v3.4.2

    3.4.2 (2022-12-15)

    Performance Improvements

    • counts: delete delayed marker when needed (#1583) (cc26f1c)
    • get-children-values: replace slow object destructuring with single object (#1586) (857d403)

    v3.4.1

    3.4.1 (2022-12-10)

    Bug Fixes

    v3.4.0

    3.4.0 (2022-12-09)

    Features

    • worker: add ready event for blockingConnection (#1577) (992cc9e)

    v3.3.5

    ... (truncated)

    Commits
    • 1e8786a chore(release): 3.5.1 [skip ci]
    • eb6a130 fix(connection): throw exception if using keyPrefix in ioredis
    • a361a8e test(connection): add test to verify cluster connection using dsn strings
    • 12efb5c fix(connection): use includes to check for upstash more reliably
    • ffb0851 chore(release): 3.5.0 [skip ci]
    • b741e84 feat(queue): add getJobState method (#1593) ref #1532
    • c031891 fix(sandbox): throw error when no exported function (#1588) fixes #1587
    • 6a6c0dc fix(job): fetch parent before job moves to complete (#1580)
    • 3fa5d33 docs(bullmq): add manual rate-limit section (#1590)
    • a426e49 chore(deps): lock file maintenance (#1568)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump pusher-js from 7.4.0 to 8.0.0

    Bump pusher-js from 7.4.0 to 8.0.0

    Bumps pusher-js from 7.4.0 to 8.0.0.

    Release notes

    Sourced from pusher-js's releases.

    v8.0.0

    8.0.0

    • [CHANGED] Specifying a cluster when instantiating the Pusher object is now mandatory. An exception is thrown if the cluster setting is missing.

    v7.6.0

    7.6.0

    • [ADDED] Introduce and to channel authorization and user authentication in order to allow for changing header and param values after the Pusher object is initialized.

    v7.5.0

    7.5.0

    • [ADDED] Watchlist Online Status

    v7.4.1

    7.4.1

    • [CHANGED] Authorization error message.
    Changelog

    Sourced from pusher-js's changelog.

    8.0.0

    • [CHANGED] Specifying a cluster when instantiating the Pusher object is now mandatory. An exception is thrown if the cluster setting is missing.

    7.6.0

    • [ADDED] Introduce headersProvider and paramsProvider to channel authorization and user authentication in order to allow for changing header and param values after the Pusher object is initialized.

    7.5.0

    • [ADDED] Watchlist Online Status

    7.4.1

    • [CHANGED] Authorization error message.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump shivammathur/setup-php from 2.21.1 to 2.23.0

    Bump shivammathur/setup-php from 2.21.1 to 2.23.0

    Bumps shivammathur/setup-php from 2.21.1 to 2.23.0.

    Release notes

    Sourced from shivammathur/setup-php's releases.

    2.23.0

    Support Ukraine


    • Added support for nightly builds of PHP 8.3. Note: Specifying nightly as the php-version now will set up PHP 8.3.
    - name: Setup PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: '8.3'
    
    • PHP 8.2 is now stable on setup-php. #673 Notes:
      • Specifying latest or 8.x as the php-version now will set up PHP 8.2.
      • Except ubuntu-22.04, all GitHub runners now have PHP 8.2 as the default version.
    - name: Setup PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: '8.2'
    
    • Added support for thread-safe builds of PHP on Linux. #651
    - name: Setup PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: '8.2'
      env:
        phpts: ts
    

    ... (truncated)

    Commits
    • 8e2ac35 Update README
    • a1e6789 Improve Get-PhalconReleaseAssetUrl
    • 9114b00 Restore stability workaround for PHP 8.1 on Windows
    • cb0c293 Fix typo in blackfire regex on Windows
    • 387ec95 Improve fetching phalcon release url on Windows
    • 3514d30 Allow major.minor protoc versions
    • e186e47 Bump version to 2.23.0
    • e51e662 Add support to install extensions from shivammathur/php-extensions-windows
    • 5afd8a1 Fix error in darwin.sh while updating dependencies
    • 1a42045 Use ls-remote to get default branch
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 1
Releases(1.5.0)
  • 1.5.0(Nov 12, 2022)

    CI & Docker Improvements

    Using multi-stage builds for Docker, we achieved lower image size, respectively:

    • Debian images: 376.6 MB -> 99.6 MB (73% reduction)
    • Alpine images: 82.9 MB -> 73 MB (12% reduction)
    • Distroless images: unchanged (72.9 MB)

    The image layers are cached between builds and commit-based and PR tags are now a thing, even for ARMv7 and arm64.

    Brought back package-lock.json

    package-lock.json has been missing since the last incident with the colors package. Not it's back, making sure the tested packages are the same as the ones we release with our distributables (NPM, Docker). Bad idea, never remove package locks. 🀑

    Source code(tar.gz)
    Source code(zip)
  • 1.4.0(Aug 21, 2022)

    • Updated packages (https://github.com/soketi/soketi/pull/638, https://github.com/soketi/soketi/pull/648, https://github.com/soketi/soketi/pull/656)
    • Added SOKETI_HOST (host) and SOKETI_METRICS_HOST (metrics.host) variables to bind the server to hosts other than 0.0.0.0 (https://github.com/soketi/soketi/pull/647, https://github.com/soketi/soketi/commit/9d4fbb2839122c72734099f884a2b92c374769dd, @erikn69)
    • Enabled more tests from upcoming 2.x & fixed shutdowns due to incorrect order of closing the elements like adapters and queue managers (https://github.com/soketi/soketi/pull/653)
    • Added support for filter_by_prefix in the HTTP API (https://github.com/soketi/soketi/pull/654)
    • Fixed a bug where upon request aborting, the response object was causing a crash by not being able to send a server error (https://github.com/soketi/soketi/commit/43a9399b7cb6c23053ca7f83e23e768ccbd76e89)
    • Fixed race conditions caused by requests that were aborted until the onAbort() handler was implemented (https://github.com/soketi/soketi/pull/655)
    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Aug 14, 2022)

    • Fixed Prometheus count for gauges when metrics were enabled (https://github.com/soketi/soketi/pull/561)
    • Improved Redis typehinting and fixed some issues with the redis options not being passed correctly (https://github.com/soketi/soketi/pull/631)
    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Jun 11, 2022)

  • 1.1.0(Jun 8, 2022)

    • Support for user authentication (https://github.com/soketi/soketi/pull/536)
      • Some WS connection end codes were fixed (now on termination should expose the right Pusher code)
    • Updated packages (https://github.com/soketi/soketi/pull/542)
    Source code(tar.gz)
    Source code(zip)
  • 1.0.2(Jun 8, 2022)

  • 1.0.1(May 18, 2022)

  • 0.34.1(May 18, 2022)

    • Fixed a bug introduced in 0.32.x where having multiple URLs in the websockets field of an app would not work properly (https://github.com/soketi/soketi/pull/518)
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(May 12, 2022)

    Read the upgrade notes: https://docs.soketi.app/v/1.x/getting-started/upgrading-from-0.x

    • Added cached channels (https://github.com/soketi/soketi/pull/468, see details on Pusher)
    • Added ?with_user_info=1 check when calling for /users endpoint (https://github.com/soketi/soketi/pull/450)
    • Only environment variables prefixed by SOKETI_ will be taken into account (https://github.com/soketi/soketi/pull/452, @rolandstarke)
    • Cork middleware for faster network transfer (https://github.com/soketi/soketi/pull/219)
    Source code(tar.gz)
    Source code(zip)
  • 0.34.0(May 12, 2022)

    • Added getChannelsWithSocketsCount() method to minimize the network transfer when logging metrics with Prometheus or retrieving channels via the /channels endpoint (https://github.com/soketi/soketi/pull/448)
    • Added Debian-based Docker images (https://github.com/soketi/soketi/pull/513)
    • Removed linux/arm/v7 build for Distroless images as they are no longer supported (https://github.com/soketi/soketi/commit/7da63aea98e93d5305ab6bc11b05264d64236d47, https://github.com/GoogleContainerTools/distroless/issues/377#issuecomment-701046893)
    Source code(tar.gz)
    Source code(zip)
  • 0.33.3(May 5, 2022)

    • Fixed previous patch's releases
    • Added some missing variables (https://github.com/soketi/soketi/commit/6dd323db075726c8771fa505200cb7a5c685e11c)
    Source code(tar.gz)
    Source code(zip)
  • 0.33.2(May 5, 2022)

  • 0.33.1(Apr 21, 2022)

    • Fixed console.log() errors (previously missing in 0.33.0) (https://github.com/soketi/soketi/pull/474, https://github.com/soketi/soketi/commit/1d2fd1b7960f5bbde503ae60100e196426799ef9)
    Source code(tar.gz)
    Source code(zip)
  • 0.33.0(Apr 15, 2022)

    • Added filtering for batch webhooks (https://github.com/soketi/soketi/pull/467, @Daynnnnn)
    • Fixed console.log() issues (https://github.com/soketi/soketi/pull/474, @xiCO2k)
    • Updated packages (https://github.com/soketi/soketi/pull/473)
    Source code(tar.gz)
    Source code(zip)
  • 0.32.2(Apr 5, 2022)

    • When closing a socket, it was redundant to query the entire cluster to retrieve the remaining connections (https://github.com/soketi/soketi/pull/447)
    Source code(tar.gz)
    Source code(zip)
  • 0.32.1(Mar 31, 2022)

    • Fixed a bug where webhooks for channel_occupied and channel_vacated triggered multiple times if connections happened on adjacent nodes (https://github.com/soketi/soketi/pull/438)
    Source code(tar.gz)
    Source code(zip)
  • 0.32.0(Mar 18, 2022)

    • Revamped the console messages (https://github.com/soketi/soketi/pull/419, @xiCO2k)
    • Added in-memory caching for app retrieval (https://github.com/soketi/soketi/pull/387, @Daynnnnn)
    • Added ws_messages_* for Prometheus (https://github.com/soketi/soketi/pull/376)
    • More fixed to Prometheus instances & cluster configuration (https://github.com/soketi/soketi/pull/378)
    • Added unicast & multicast address for the Cluster adapter (https://github.com/soketi/soketi/pull/398)
    Source code(tar.gz)
    Source code(zip)
  • 0.31.1(Feb 17, 2022)

  • 0.31.0(Feb 17, 2022)

    Added NATS adapter (https://github.com/soketi/soketi/pull/317)

    NATS is an alternative to Redis PubSub for intra-process communication. Starting with this version, you may use the NATS adapter instead of Redis Pub/Sub. The driver is available for testing and you may use it with your NATS server.

    The expectation for NATS is to increase the performance and prepare soketi for more robust features in distributed systems, offered by NATS, such as more KV operations support, like incr or add, as this will allow using the built-in Key-Value storage for rate limiters.

    Added init() handlers for adapters and closing connections after server gets closed

    With the introduction of NATS, there was the need of making sure the adapters initialize before the server bootstrapping runs. This way, the adapters will now behave predictably.

    As a result, the app got some polishing for the namespaces and plugins (adapters, rate limiters, queue managers), so that after the server closes, the handlers for their respective connections (like Redis connections or NATS connections) would close without suspending them. The sockets will also be evicted from memory on each server close.

    We tested it thoroughly and it's not expected to break anything.

    Fixes and other additions

    • Fixed some race conditions throughout the app
    • Added more options to the benchmark environment
    • Added debugging when the app is not found
    • Added SQS batching support (for cost savings)
    • Added more metrics for the horizontal adapters
    • Added separate custom options for pub and sub clients for the Redis adapter
    • Fixed webhook sender's promise by checking in as done after the entire job finishes
    • Fixed webhook sender's behavior by not sending webhook events if no webhooks are defined
    Source code(tar.gz)
    Source code(zip)
  • 0.30.2(Jan 30, 2022)

  • 0.30.1(Jan 30, 2022)

  • 0.30.0(Jan 29, 2022)

    • Added SQS driver for queues (https://github.com/soketi/soketi/pull/156)
    • Added Redis Cluster support for the Redis Rate Limiter and Redis Adapter (https://github.com/soketi/soketi/pull/308)
    Source code(tar.gz)
    Source code(zip)
  • 0.29.0(Jan 24, 2022)

    1. Limits on an app-by-app basis

    Starting with this version, you can set maximum presence channel members' size, maximum presence channel members count, and other limits at the app-level, with fallback to the server-declared defaults.

    MySQL

    You need to add the following fields to your table:

    `max_presence_members_per_channel` tinyint(1) NULL,
    `max_presence_member_size_in_kb` tinyint(1) NULL,
    `max_channel_name_length` tinyint(1) NULL,
    `max_event_channels_at_once` tinyint(1) NULL,
    `max_event_name_length` tinyint(1) NULL,
    `max_event_payload_in_kb` tinyint(1) NULL,
    `max_event_batch_size` tinyint(1) NULL
    

    Setting any of them to null or '' will ignore the setting, and use the limits associated with the server-level declared defaults

    Existing apps running on <0.29.0 will still work even if you don't have these fields added after the migration to 0.29.0. You should add these fields to keep your database up-to-date or to have the choice to, later on, imply limits to your apps.

    PostgreSQL

    You need to add the following fields to your table:

    max_presence_members_per_channel integer DEFAULT NULL,
    max_presence_member_size_in_kb integer DEFAULT NULL,
    max_channel_name_length integer DEFAULT NULL,
    max_event_channels_at_once integer DEFAULT NULL,
    max_event_name_length integer DEFAULT NULL,
    max_event_payload_in_kb integer DEFAULT NULL,
    max_event_batch_size integer DEFAULT NULL
    

    Setting any of them to null or '' will ignore the setting, and use the limits associated with the server-level declared defaults

    Existing apps running on <0.29.0 will still work even if you don't have these fields added after the migration to 0.29.0. You should add these fields to keep your database up-to-date or to have the choice to, later on, imply limits to your apps.

    DynamoDB

    Your items in DynamoDB can have the following new fields:

    MaxPresenceMembersPerChannel: { N: '-1' },
    MaxPresenceMemberSizeInKb: { N: '-1' },
    MaxChannelNameLength: { N: '-1' },
    MaxEventChannelsAtOnce: { N: '-1' },
    MaxEventNameLength: { N: '-1' },
    MaxEventPayloadInKb: { N: '-1' },
    MaxEventBatchSize: { N: '-1' },
    

    Not setting any of the above fields will ignore the setting, and will fallback to the limits associated with the server-level declared defaults.

    Existing apps running on <0.29.0 will still work even if you don't have these fields added after the migration to 0.29.0. You should add these fields to keep your database up-to-date or to have the choice to, later on, imply limits to your apps.

    2. Added MODE variable for the running mode

    The app itself is full-stack, meaning it works as an HTTP API, WebSocket Server, and Queue processor, all at once. The MODE variable is now introduced to help you scale apps that use external drivers (like Redis for queue). You may want to have two fleets: one that actively interacts with the userbase HTTP/WS, and one fleet that scales independently to process queues for webhooks.

    MODE=full

    The default mode, and is the mode in which the apps <0.29.0 currently run. (no breaking changes expected for this feature)

    MODE=server

    It does not process queues. It will only serve HTTP/WS requests to your clients.

    MODE=worker

    You need to pair this specific mode setting with PORT to choose a different port to run on. The servers running in this mode will have an HTTP server running so that you can check for /metrics, / (health checks), and /ready (readiness checks). There are NO WebSocket endpoints running.

    Source code(tar.gz)
    Source code(zip)
  • 0.28.0(Jan 20, 2022)

    • Added /accept-traffic endpoint to see if new traffic can be redirected to the current instance (https://github.com/soketi/soketi/commit/537d420ff70aaa560ce9de1b4a0952ad14b27e40)
    Source code(tar.gz)
    Source code(zip)
  • 0.27.1(Jan 17, 2022)

  • 0.27.0(Jan 17, 2022)

    • Added support for ARM containers (https://github.com/soketi/soketi/pull/154)
    • Added SSL_CA variable to specify the CA file path (https://github.com/soketi/soketi/pull/285)
    • Added failsafe error for clients that send messages before pusher:connection_established is sent (https://github.com/soketi/soketi/pull/287)
    • Patched async (https://github.com/soketi/soketi/pull/273)
    Source code(tar.gz)
    Source code(zip)
Owner
Soketi
Your tiny WebSockets companion.
Soketi
JSON-RPC 2.0 implementation over WebSockets for Node.js and JavaScript/TypeScript

WebSockets for Node.js and JavaScript/TypeScript with JSON RPC 2.0 support on top. About The rpc-websockets library enables developers to easily imple

Elpheria 482 Dec 21, 2022
A Promise-based API for WebSockets

websocket-as-promised A WebSocket client library with Promise-based API for browser and Node.js. Example import WebSocketAsPromised from 'websocket-as

Vitaliy Potapov 547 Dec 18, 2022
Lightweight WebSocketServer wrapper lib using ws-wrapper to wrap connected WebSockets

ws-server-wrapper Lightweight WebSocketServer wrapper lib using ws-wrapper and ws to wrap connected WebSockets. The only dependency is ws-wrapper itse

Blake Miner 17 May 9, 2022
Simple to use, blazing fast and thoroughly tested WebSocket client and server for Node.js

ws: a Node.js WebSocket library ws is a simple to use, blazing fast, and thoroughly tested WebSocket client and server implementation. Passes the quit

WebSockets 19.2k Jan 4, 2023
PondSocket is a fast, minimalist and bidirectional socket framework for NodeJS.

PondSocket PondSocket is a fast, minimalist and bidirectional socket framework for NodeJS. Pond allows you to think of each action during a sockets li

Roy Ossai 3 Nov 1, 2022
A node.js module for websocket server and client

Nodejs Websocket A nodejs module for websocket server and client How to use it Install with npm install nodejs-websocket or put all files in a folder

Guilherme Souza 719 Dec 13, 2022
Standards-compliant WebSocket client and server

faye-websocket This is a general-purpose WebSocket implementation extracted from the Faye project. It provides classes for easily building WebSocket s

null 588 Dec 23, 2022
This server is made to serve the MSN-Messenger app develop by Gabriel Godoy. This applications is capable to register users and messages in order implements a real time chat.

?? MSN-Messenger-Server Node.js server for real time chat About | Installations | How to Use | Documentation | Technologies | License ?? About This se

Guilherme Feitosa 7 Dec 20, 2022
πŸš€πŸš€πŸš€ Nuxt3 client and server communication

Nuxt 3 Minimal Starter Look at the nuxt 3 documentation to learn more. Setup Make sure to install the dependencies: # yarn yarn install # npm npm ins

HomWang 4 Dec 19, 2022
WebSocket emulation - Node.js server

SockJS-node SockJS for enterprise Available as part of the Tidelift Subscription. The maintainers of SockJS and thousands of other packages are workin

SockJS 2.1k Dec 29, 2022
Sse-example - SSE (server-sent events) example using Node.js

sse-example SSE (server-sent events) example using Node.js SSE is a easy way to commutate with the client side in a single direction. it has loss cost

Jack 2 Mar 11, 2022
Super-Resolution-CNN - web server for super-resolution CNN

Web Server for Image Super-Resolution This project showcases the Super-Resolution CNN (SRCNN). The model is pretrained following this tutorial. The or

Daniel O'Sullivan 1 Jan 3, 2022
This Repository implements an Authenticated Websocket Server built in Node Js along ws library.

websockets-authentication-server This Repository implements an Authenticated Websocket Server built in Node Js along ws library. Features Authenticate

M.Abdullah Ch 7 May 5, 2023
Next-JS interface for πŸ€– Open-AI based πŸ•· spider-man conversation simulator ⚑️

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Mohit Yadav 12 Dec 12, 2022
Simple realtime chat application made by NodeJS, Express, Socket.io and Vanilla Javascript. This project is made to discover socket.io and understand its basic features.

LearnByChat App Simple realtime chat application made with NodeJS, Express, Socket.io and Vanilla Javascript. This project is made to discover socket.

Ayoub Saouidi 1 Dec 19, 2021
A simple web app that people can chat and send images into.

Typsnd Typsnd. Type, send. It's as simple as that. Typsnd is a simple web app that people can chat and send images into. It is based on Express.JS, No

null 10 Nov 10, 2022
Socket.io-Express - A simple express project to learn how to use socket.io.

Socket.io Express A simple express project to learn how to use socket.io ✨ ?? Simple project This is a small project that has been designed to be usab

Zerio 6 Sep 25, 2022
Website to display chats and gifts in realtime from your TikTok LIVE stream. Demo project for TikTok-Live-Connector library.

TikTok-Chat-Reader A chat reader for TikTok LIVE utilizing TikTok-Live-Connector and Socket.IO to forward the data to the client. This demo project us

David 104 Dec 31, 2022
Chat with your gpg contacts without leaving the terminal

chatty GPG encrypted, ephemeral, real time chatting in the terminal Features End to end encrypted Passwordless Real time vim like keybindings Requirem

Navdeep Saini 33 Jun 7, 2022