μWebSockets for Node.js back-ends :metal:

Overview

Simple, secure[1] & standards compliant[2] web server for the most demanding[3] of applications. Read more...

Language grade: C/C++

A note on NPM drama



Simple performance

µWebSockets.js is an HTTP/WebSocket server for Node.js that runs 8.5x that of Fastify and at least 10x that of Socket.IO. It comes with both router and pub/sub support and is suited for extraordinary performance needs. Browse the documentation and see the main repo. There are tons of examples but here's the gist of it all:

/* Non-SSL is simply App() */
require('uWebSockets.js').SSLApp({

  /* There are more SSL options, cut for brevity */
  key_file_name: 'misc/key.pem',
  cert_file_name: 'misc/cert.pem',
  
}).ws('/*', {

  /* There are many common helper features */
  idleTimeout: 30,
  maxBackpressure: 1024,
  maxPayloadLength: 512,
  compression: DEDICATED_COMPRESSOR_3KB,

  /* For brevity we skip the other events (upgrade, open, ping, pong, close) */
  message: (ws, message, isBinary) => {
    /* You can do app.publish('sensors/home/temperature', '22C') kind of pub/sub as well */
    
    /* Here we echo the message back, using compression if available */
    let ok = ws.send(message, isBinary, true);
  }
  
}).get('/*', (res, req) => {

  /* It does Http as well */
  res.writeStatus('200 OK').writeHeader('IsExample', 'Yes').end('Hello there!');
  
}).listen(9001, (listenSocket) => {

  if (listenSocket) {
    console.log('Listening to port 9001');
  }
  
});

💪 Unfair advantage

Being written in native code directly targeting the Linux kernel makes it way faster than any JavaScript implementation.

Low latencies are key to customer satisfaction and your competitive edge. Run low latency services at a lower cost.

⚔️ Battle proven

We've been fully standards compliant with a perfect Autobahn|Testsuite score since 2016[2]. Companies with everything to lose rely on µWebSockets on a daily basis - we power the trading APIs of Bitfinex.com & Kraken.com, handling volumes of multiple billions of USD every day. Other companies include Trello, where µWebSockets is serving their 50 million users with real-time board updates.

📦 Easily installed

We recommend, for simplicity installing with yarn add uWebSockets.js@uNetworking/uWebSockets.js#v19.3.0 or any such release.

Being an open source project, you are of course perfectly free to choose other ways of installation as you might prefer.

💼 Commercially supported

uNetworking AB is a Swedish consulting & contracting company dealing with anything related to µWebSockets; development, support and customer success.

Don't hesitate sending a mail if you're building something large, in need of advice or having other business inquiries in mind. We'll figure out what's best for both parties and make sure you're not stepping into one of the many common pitfalls.

Special thanks to BitMEX, Bitfinex, Google, Coinbase, Bitwyre and deepstreamHub for allowing the project itself to thrive on GitHub since 2016 - this project would not be possible without these beautiful companies.

👪 A family

µWebSockets.js is the Node.js integration of µWebSockets; the standalone C++ project. If performance is of utter importance, you don't necessarily have to use JavaScript/Node.js but could write apps in C++ using µWebSockets directly. It works exactly the same way, and will offer unbeatable performance for those highly demanding applications. Either way - the two projects both follow the same security testing, compliance testing and receive the same bug fixes and features. They are part of the same family.

🤝 Permissively licensed

Intellectual property, all rights reserved.

Where such explicit notice is given, source code is licensed Apache License 2.0 which is a permissive OSI-approved license with very few limitations. Modified "forks" should be of nothing but licensed source code, and be made available under another product name. If you're uncertain about any of this, please ask before assuming.

Comments
  • Video streaming example segfaults

    Video streaming example segfaults

    While going off of the VideoStreamer example to implement reading from a read stream, I'm hitting into a segfault. The example code alone is enough to cause this, so you should be able to repro on that alone. I've noticed that adding console.logs in a bunch of places (to try and figure out which call to any uWS function causes it, no luck) made the issue less common. Some kind of race condition perhaps...?

    Is the VideoStreamer example still correct, or should reading from a large stream be implemented differently?

    Exception thrown at 0x00000001402068F2 in node.exe: 0xC0000005: Access violation reading location 0x0000005F656C6309.

    2022-04-26_20-45-43

    I'm running Node v16.14.2 on Windows, and uWS.js 20.8.0.

    bug 
    opened by o5k 79
  • Graceful shutdown on uncaught error

    Graceful shutdown on uncaught error

    I'm trying to use the library in a worker thread, but I can't seem to do a graceful shutdown when the worker dies due to an uncaught exception. I've tried as many ways to handle this case as I could find, I'm not sure if this is a mistake on my end, maybe I'm missing something.

    I'm using Node 15.10.0, and uWS.js 18.14.0 on Win10, here's the code:

    const uWS = require('uWebSockets.js');
    const { Worker, isMainThread, threadId, parentPort } = require('worker_threads');
    const os = require('os');
    const port = 9001;
    if (isMainThread) {
        const workers = /* os.cpus() */[0].map(() => {
            return new Worker(__filename);
        });
        function cleanup() {
            workers.forEach((worker) => {
                worker.postMessage('cleanup'); // too late
            });
        };
        process.on('uncaughtException', cleanup);
    } else {
        let listenSocket;
        const app = uWS.App({}).listen(port, (token) => {
            listenSocket = token;
            if (token) {
                console.info(`${threadId} listening on ${port}`);
                performance.now(); // this will throw
            } else {
                console.error(`${threadId} failed listening on ${port}`);
            }
        });
        parentPort.on('message', (value) => {
            if (value === 'cleanup') {
                shutdown();
                process.exit(0);
            }
        });
        function shutdown() {
            if (listenSocket) {
                uWS.us_listen_socket_close(listenSocket);
                listenSocket = null;
            }
        }
    }
    

    The call to performace.now() is not valid, because performance must be imported from perf_hook, so it will throw a ReferenceError. The uncaught exception is handled by cleanup, but at this point, the worker is already terminated, so it can't respond to the cleanup message.

    Here's the output:

    1 listening on 9001
    uv loop at [0000007BD97FF798] has open handles:
    [000001D2F1E59F90] poll (active)
            Close callback: 0000000000000000
            Data: 0000000000000000
    uv loop at [0000007BD97FF798] has 1 open handles in total
    C:\Program Files\PowerShell\7\pwsh.exe[5036]: c:\ws\src\debug_utils.cc:322: Assertion `0 && "uv_loop_close() while having open handles"' failed.
     1: 00007FF779D5066F public: static int __cdecl v8::internal::Isolate::ArchiveSpacePerThread(void)+4607
     2: 00007FF779CE4A46 SSL_get_quiet_shutdown+65190
     3: 00007FF779CE4DC1 SSL_get_quiet_shutdown+66081
     4: 00007FF779D50334 public: static int __cdecl v8::internal::Isolate::ArchiveSpacePerThread(void)+3780
     5: 00007FF779C2287D public: void __cdecl v8::internal::wasm::SignatureMap::Freeze(void) __ptr64+35901
     6: 00007FF779C1DCB8 public: void __cdecl v8::internal::wasm::SignatureMap::Freeze(void) __ptr64+16504
     7: 00007FF779D985FD uv_poll_stop+557
     8: 00007FF77ABBE0B0 public: class v8::internal::compiler::Operator const * __ptr64 __cdecl v8::internal::compiler::RepresentationChanger::Uint32OverflowOperatorFor(enum v8::internal::compiler::IrOpcode::Value) __ptr64+398416
     9: 00007FFCA3027034 BaseThreadInitThunk+20
    10: 00007FFCA3C1D0D1 RtlUserThreadStart+33
    

    I looked through the issues, and it is similar to #324. Could this be the same problem?

    opened by jprochazk 60
  • Incorrect headers decode

    Incorrect headers decode

    Hi. Please, correct me, if I am mistake. You are always trying to decode header to utf8 when getHeader() called. This is not quite correct and can lead to loose header value. According to the spec http headers can be us-ascii strings only. Some headers can be specially encoded and decoded by user. But application server must always return ascii strings. Look at example below, value of utf header is lost.

    #!/usr/bin/env node
    
    import http from "node:http";
    import uws from "uWebSockets.js";
    
    const app = uws.App().get( "/*", ( res, req ) => {
        console.log( "-- ascii:", req.getHeader( "ascii" ) );
        console.log( "-- utf:", req.getHeader( "utf" ) );
    
        res.end();
    } );
    
    await new Promise( resolve => app.listen( 80, resolve ) );
    
    http.request( "http://127.0.0.1/",
        {
            "headers": {
                "ascii": "test",
                "utf": Buffer.from( "тест" ).toString( "binary" ),
            },
        },
        res => {
            process.exit();
        } ).end();
    
    opened by zdm 49
  • [feature] is it possible to add autoPingTime work with idleTimeout?

    [feature] is it possible to add autoPingTime work with idleTimeout?

    Is it possible to add autoPingTime work with idleTimeout in WebSocketBehavior config ? like this:

    /** Maximum amount of seconds that may pass without sending or getting a message. Connection is closed if this timeout passes. Resolution (granularity) for timeouts are typically 4 seconds, rounded to closest.
         * Disable by leaving 0.
         */
    idleTimeout: 250,
    /** auto send ping to remote client interval time (seconds) 
         * the response pong will auto refresh idleTimeout, make sure remote client is alive
         * Disable by leaving 0.
         */
    autoPingTime: 120,
    

    This can make sure remote client is alive especially in mobile network.

    Right now i'm recording all websocket, loop sending ping and handle pong at nodejs APP layer. If this feature can be add to uWebSockets core layer, maybe the performance will be better and APP layer will be easier.

    opened by roytan883 39
  • Check failed: receiver.IsJSFunction()

    Check failed: receiver.IsJSFunction()

    uWebSockets works great. But the sever shuts down irregularly with the error below. Is there any clue for me to find out what can I do?

    #                                                                                                       
    # Fatal error in , line 0                                                                               
    # Check failed: receiver.IsJSFunction().                                                                
    #                                                                                                       
    #                                                                                                       
    #                                                                                                       
    #FailureMessage Object: 000000EE276FDD50                                                                
     1: 00007FF6BA7B380F napi_wrap+128063                                                                   
     2: 00007FF6BA6FA4BF v8::internal::wasm::JSToWasmWrapperCompilationUnit::~JSToWasmWrapperCompilationUnit
    8047                                                                                                    
     3: 00007FF6BB127254 V8_Fatal+212                                                                       
     4: 00007FF6BACC2A88 v8::internal::JSReceiver::GetCreationContext+360                                   
     5: 00007FF6BAF4F260 v8::Object::CreationContext+32                                                     
     6: 00007FF6BA7D0218 node::MakeCallback+40                                                              
     7: 00007FFF735345C8 us_poll_resize+5192                                                                
     8: 00007FFF7353F15F node_register_module_v72+40479                                                     
     9: 00007FFF7355675F node::ArrayBufferAllocator::operator=+4159                                         
    10: 00007FFF735466C4 node_register_module_v72+70532                                                     
    11: 00007FF6BAF1DDB0 v8::internal::Builtins::builtin_handle+323456                                      
    12: 00007FF6BAF1D2F7 v8::internal::Builtins::builtin_handle+320711                                      
    13: 00007FF6BAF1D638 v8::internal::Builtins::builtin_handle+321544                                      
    14: 00007FF6BAF1D43E v8::internal::Builtins::builtin_handle+321038                                      
    15: 00007FF6BB3B50AD v8::internal::SetupIsolateDelegate::SetupHeap+546893                               
    16: 00007FF6BB339F5C v8::internal::SetupIsolateDelegate::SetupHeap+42748                                
    17: 00007FF6BB337491 v8::internal::SetupIsolateDelegate::SetupHeap+31793                                
    18: 00007FF6BB33707C v8::internal::SetupIsolateDelegate::SetupHeap+30748                                
    19: 00007FF6BAE77E03 v8::internal::Execution::CallWasm+1395                                             
    20: 00007FF6BAE77786 v8::internal::Execution::Call+182                                                  
    21: 00007FF6BAF487FD v8::Function::Call+605                                                             
    22: 00007FF6BA7CFDF8 node::CallbackScope::~CallbackScope+1448                                           
    23: 00007FF6BA7D02B7 node::MakeCallback+199                                                             
    24: 00007FFF735345C8 us_poll_resize+5192                                                                
    25: 00007FFF7353F841 node_register_module_v72+42241                                                     
    26: 00007FFF73561570 uWS::WebSocketProtocol<1,uWS::WebSocketContext<1,1> >::getOpCode+8864              
    27: 00007FFF7353F212 node_register_module_v72+40658                                                     
    28: 00007FFF73561149 uWS::WebSocketProtocol<1,uWS::WebSocketContext<1,1> >::getOpCode+7801              
    29: 00007FFF7353CC64 node_register_module_v72+31012                                                     
    30: 00007FFF7355BB45 uWS::WebSocketProtocol<1,uWS::WebSocketContext<0,1> >::consumeContinuation+901     
    31: 00007FFF735565AC node::ArrayBufferAllocator::operator=+3724                                         
    32: 00007FFF735340AE us_poll_resize+3886                                                                
    33: 00007FFF73532370 us_loop_iteration_number+1280                                                      
    34: 00007FF6BA7ED0C6 uv_spawn+2022                                                                      
    35: 00007FF6BA7FC9CC uv_loop_init+1244                                                                  
    36: 00007FF6BA7FCB74 uv_run+244                                                                         
    37: 00007FF6BA71AF13 v8::internal::Scope::locals+31043                                                  
    38: 00007FF6BA77A5A3 node::Start+275                                                                    
    39: 00007FF6BA6267AC RC4_options+339628                                                                 
    40: 00007FF6BB46BFD8 v8::internal::SetupIsolateDelegate::SetupHeap+1296248                              
    41: 00007FFF87E77BD4 BaseThreadInitThunk+20                                                             
    42: 00007FFF88E4CE51 RtlUserThreadStart+33         
    
    help wanted 
    opened by yar2001 37
  • Server should not shutdown when there is an error

    Server should not shutdown when there is an error

    Server currently shuts down when there is an error, which is not preferable for a robust application.

    Also there is no stack trace in error shown, so it is hard to debug.

    opened by aadityataparia 34
  • Static buffer for onData

    Static buffer for onData

    A couple of years ago, the developers of the node added a reasonable way to read a socket from a static buffer. This reduces memory allocations for temporary buffer copies and reduces work GC. https://github.com/nodejs/node/pull/25436

    Does this make sense, for read HTTP body? If yes, I suggest adding an onRead handler, making the interface the same as in Node.js https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener

    {
      ...,
      onread: {
        // Reuses a 4KiB Buffer for every read from the socket.
        buffer: Buffer.alloc(4 * 1024),
        callback: function(nread, buf) {
          // Received data is available in `buf` from 0 to `nread`.
          console.log(buf.toString('utf8', 0, nread));
        }
      }
    });
    
    opened by uasan 31
  • app.use

    app.use

    Are you planning on implementing app.use functionality in the router?

    app.use((req, res, next)=>{ next() })  
    
    app.use('/path', handler)
    

    This would make it possible for developers to easily replace their current framework such as polka with µWS.

    opened by dekdevy 31
  • What can cause this error

    What can cause this error "Cork buffer must not be held across event loop iterations!"?

    I'm using uWebsockets.js to communicate between servers, and i got this error:

    "Cork buffer must not be held across event loop iterations!"

    What exactly can cause this error in my js code?

    bug 
    opened by amunhoz 25
  • Add TypeScript declarations and generate docs

    Add TypeScript declarations and generate docs

    Because of native nature of your library it's impossible for IDEs to list methods of req and res objects. Also it's impossible to get methods and properties of this objects via Object.enties or Object.keys.

    So the question is where to find an uWS's HTTP API reference?

    enhancement 
    opened by AlexTolmachev 23
  • Updated TypeScript to allow defined user data

    Updated TypeScript to allow defined user data

    The PR changes the WebSocket type definition to allow for an optional type argument that allows for strictly defined WebSocket user data.

    Previously, when you extended the WebSocket object in TypeScript, you did not get the benefit of the typing:

    interface ExtendWebSocket extends WebSocket {
      username: 'biw'
    }
    
    uWebSockets.App().ws('/*', {
      open: (ws: ExtendWebSocket) => {
        ws.username = 'biw'
       
        // no error for key not in ExtendWebSocket
        ws.token = '123'
      },
    

    With this change, you have the option for more strict type checking:

    interface ExtendValues {
      username: 'biw'
    }
    
    uWebSockets.App().ws('/*', {
      open: (ws: ExtendWebSocket<ExtendValues>) => {
        ws.username = 'biw'
       
        // will throw typescript error for undefined key
        ws.token = '123'
      },
    

    The default behavior is still the same and non-breaking:

    uWebSockets.App().ws('/*', {
      open: (ws) => {
        // no typescript errors for either
        ws.username = 'biw'
        ws.token = '123'
      },
    

    Happy to make any changes you'd like, just let me know!

    opened by biw 21
  • get ceryficate some info like hash or name

    get ceryficate some info like hash or name

    • can't find the way to use "Cloudflare Origin Certificate"
    • use then blocking IP list provided by Cloudflare that ignore many Asian exit countrys Siggapur,Thailand,Laos,Vietnam i.e missing 172.68.6.144 from cloudflare.com/ips/
    • try to contact this m-o-r-o-n-s from Cloudflare like year ago but they don't provide basic support as is too expensive

    What is my problem:

    • need somehow hide my server identify by verify hash of cloudflare certyficate or some basic details about cert
    // example nanoexpress use: uWebSockets.js
    app.get('/24325325141', async (req, res) => {
           // this is a dummy - users from google please ignore
    	res.end( req.cert.CommonName == 'sni.cloudflaressl.com' );
    
    })
    
    opened by gotshadowbantempaccount 4
  • HTTP3 example not working

    HTTP3 example not working

    Hi @uNetworkingAB

    I'm trying to run HTTP3 server but it does not work. Here minimal repo to reproduce: https://github.com/nanoexpress/http3-uws

    Steps to reproduce

    • Follow steps Open in VSCode from README
    • Opening in browser local url with port, e.g. https://localhost:50624/

    Actual

    image

    Expected

    Working web-server with response of H3llo World!

    experimental feedback 
    opened by dalisoft 0
  • MSVCP140 should not be needed

    MSVCP140 should not be needed

    Hi, I am getting this error Error: This version of µWS is not compatible with your Node.js build: after upgrading to 20.6.0.

    I am running node v14.17.0

    What is the new node version requirement?

    enhancement low priority 
    opened by artknight 15
Releases(v20.15.0)
  • v20.15.0(Nov 7, 2022)

  • v20.14.0(Oct 18, 2022)

  • v20.13.0(Oct 17, 2022)

    Http fixes and whitelisting Node.js 16

    • Bumps uWS to v20.24.0
    • While Node.js 16 performs worse than Node.js 18, it does not perform as catastrophically bad as Node.js 14. Therefore we do whitelist it again.
    Source code(tar.gz)
    Source code(zip)
  • v20.12.0(Oct 11, 2022)

    Blacklist Node.js 14 and 16

    • Enormous performance regressions in Node.js 16 and 14 introduced by Node.js maintainers, have caused an unacceptable 75% performance decrease in uWS.js. Therefore we are forced to reject these broken versions of Node.js until Node.js maintainers get their act together and start benchmarking their changes.
    • Node.js 18.10 is known to perform reasonably well, and is kept whitelisted.
    Source code(tar.gz)
    Source code(zip)
  • v20.11.0(Oct 11, 2022)

    Experimental HTTP/3 and much more

    Updates uWS from v20.14.0 to v20.23.0 which brings many (stable) improvements. Please have a read over at https://github.com/uNetworking/uWebSockets/releases for a more complete explanation of all the changes involved.

    Other than these stable changes, all platforms now ship with (still experimental) HTTP/3 support enabled. It is known to work on Linux - macOS still has some missing pieces and Windows is entirely broken for now. You can try the H3lloWorld.js example as a starting point, even though there have been more visual demos presented.

    HTTP/3 support in this release is to be considered entirely broken for any production purposes, see it more as a bonus coming along the (many) stable changes.

    Source code(tar.gz)
    Source code(zip)
  • v20.10.0(May 4, 2022)

    • Wraps endWithoutBody
    • Properly returns all 3 sendStatus from send calls (backwards compatible)
    • Merges a few PRs updating docs, adding ESM wrapper, etc
    Source code(tar.gz)
    Source code(zip)
  • v20.9.0(May 2, 2022)

  • v20.8.0(Apr 20, 2022)

  • v20.7.0(Apr 20, 2022)

    Node.js 18, LTS-only

    With this release and going forwards we will support only LTS versions of Node.js. Every year one new LTS version will be added and one old will be dropped. This means we always support a rolling set of 3 LTS versions. This release supports 14, 16 and 18.

    Source code(tar.gz)
    Source code(zip)
  • v20.6.0(Dec 16, 2021)

  • v20.5.0(Dec 7, 2021)

  • v20.4.0(Oct 31, 2021)

  • v20.3.0(Oct 30, 2021)

  • v20.2.0(Oct 28, 2021)

  • v20.1.0(Oct 24, 2021)

    Node.js 17 and BoringSSL

    • Adds support for Node.js 17, removes support for Node.js 12.
    • Updates to latest uWS.
    • Binaries are now built against BoringSSL, not against whatever OpenSSL version/fork Node.js ships with. This improves performance, cuts dependencies on the Node.js camp and improves binary compatibility. Please test SSL and report any issues.
    Source code(tar.gz)
    Source code(zip)
  • v20.0.0(Oct 1, 2021)

  • v19.5.0(Sep 22, 2021)

  • v19.4.0(Sep 15, 2021)

  • v19.3.0(Jun 26, 2021)

  • v19.2.0(Apr 20, 2021)

  • v19.1.0(Apr 13, 2021)

  • v19.0.0(Apr 10, 2021)

  • v18.14.0(Jan 12, 2021)

  • v18.13.0(Jan 8, 2021)

  • v18.12.0(Dec 19, 2020)

  • v18.11.0(Nov 28, 2020)

    Apple Silicon confirmed working

    ARM64 ("Apple Silicon") binaries confirmed to be working on (native) Node.js 15 under macOS Big Sur. Thanks to the excellent GitHub Actions, we could provide native support for this new platform on day 1, without ever needing to buy any Apple hardware. That's a win for the environment, as buying new crap you don't need is a bad habit.

    • Fixes package.json version mismatch of previous release
    Source code(tar.gz)
    Source code(zip)
  • v18.10.0(Nov 9, 2020)

    Improved argument checking

    There has been a few cases where the library would segfault on invalid arguments passed (wrong type, invalid number of arguments, etc). This situation has been improved with better checks and explicit exceptions. There are still cases that needs better checking but the most common cases have been fixed.

    New exceptions include "Passed callback is not a function." and "Function requires at least X arguments.".

    Source code(tar.gz)
    Source code(zip)
  • v18.9.0(Oct 22, 2020)

    ARM64 macOS 11 ("Apple Silicon")

    It is now possible to successfully build binaries for ARM64 macOS using GitHub Actions, and this is exactly what this release does. These binaries are entirely untested since, well, nobody has an ARM64 Mac and I don't think Node.js runs on it yet. In any case - this is good preparation for the future.

    • It should mean no difference to Intel macOS users unless something has regressed - please report any issue with this release regarding macOS.
    • If you happen to have an ARM64 Mac; please test this if you can!
    Source code(tar.gz)
    Source code(zip)
  • v18.8.0(Oct 21, 2020)

    Node.js 15

    Binaries are now built for every Node.js release from 10 up to 15. There is still no support for "Apple Silicon" (ARM64) since GitHub Actions cannot build for it, yet. That support will come in the future. Some of these old binaries will (probably) be culled in future releases to shrink the size of an install.

    Source code(tar.gz)
    Source code(zip)
  • v18.7.0(Oct 15, 2020)

    Multipart & URI query parsing, proper WorkerThreads

    • Adds a multipart parser, uWS.getParts(body, contentType) that parses at least 160x faster than parse-multipart given 120kb input.
    • Adds req.getQuery(key) for fetching the URI decoded URI query. Executes 400x faster than decodeURIComponent, so make sure you use this whenever you can.
    • Fixes graceful shutdown of WorkerThreads - no longer will the process fail on libuv assertions when exiting cleanly from a worker thread.
    • Bumped ABI required on macOS - you'll need macOS Mojave or newer from now on.
    • Fixed a pedantic CodeQL alert - we are ranked flawless A+ now.
    • Updates to latest uWS.
    Source code(tar.gz)
    Source code(zip)
Owner
uNetworking AB
uNetworking AB
A WebSocket Implementation for Node.JS (Draft -08 through the final RFC 6455)

WebSocket Client & Server Implementation for Node Overview This is a (mostly) pure JavaScript implementation of the WebSocket protocol versions 8 and

Brian McKelvey 3.6k Dec 30, 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
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
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
ONG-Node JS

Server Base - Proyecto ONG Envinroment setup Create database Copy .env.example to .env and fill with database credentials.

Alkemy 2 Dec 30, 2021
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
Mini Projeto de um chat-app usando o protocolo WebSocket através da lib 'ws' do node.js

CHAT-APP-WEBSOCKET Mini Projeto de um chat-app usando o protocolo WebSocket através da lib 'ws' do node.js Obs o intuito deste projeto não é o fronten

Vinicius dos Santos Rodrigues 4 Jul 14, 2022
Node.js library to receive live stream chat events like comments and gifts in realtime from TikTok LIVE.

TikTok-Live-Connector A Node.js library to receive live stream events such as comments and gifts in realtime from TikTok LIVE by connecting to TikTok'

David 399 Jan 4, 2023
Unix dgram, seqpacket, etc binding for Node.js.

node-unix-socket node-unix-socket allows you to use some nonblocking unix sockets that are currently not supported by Node.js native modules, includin

Bytedance Inc. 31 Dec 27, 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
Chrome extension to automatically mute/unmute Spotify tab when Advertisement starts and ends!

Ad free spotify Chrome extension to automatically mute/unmute Spotify tab when there's an Advertisement starts or ends. How to install Download Zip fi

Vivek 23 Dec 25, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
A back-end server aplication created using node.js, express and mongodb.

Course Material and FAQ for my Complete Node.js, Express and MongoDB Bootcamp This repo contains starter files and the finished project files for all

Pablo César Jiménez villeda 1 Jan 4, 2022
A NPM package powered by Yeoman that generates a scaffolding boilerplate for back-end workflow with Node.js.

generator-noderplate Generate Node.js starter files with just one command! We have deployed a npm package that will generate a boilerplate for nodejs

Samarjeet 3 Jan 24, 2022
This is a template project demonstrating how the MERN stack(Mongo, Express, React, Node) can be used, here we have the back end implementation and there is the React implementation as the front end

Versão em português MERN stack This is a template project demonstrating how the MERN stack(Mongo, Express, React, Node) can be used, here we have the

Douglas Samuel Gonçalves 2 Jan 22, 2022
A boilerplate application for building Node.js back-end application in TypeScript

RESTful API Node Server Boilerplate A boilerplate/starter project for quickly building RESTful APIs and with typescript ?? Installation Install the de

Youssef Hajjari 14 Nov 23, 2022
stackoverflow back end clone with node.js

Stackoverflow clone with Node.js Run To run this project, download it to your computer and open it with a code editor. Open the .env file in the env f

mert 35 Nov 20, 2022
Bugs bugging you? Bug back.

bugger Warning: Experimental bugger provides Chrome Devtools bindings for node. It integrates tightly with Chrome which means two things: It attempts

bugger 157 Aug 8, 2022