uWebSockets.js/README.md

52 lines
2.5 KiB
Markdown
Raw Normal View History

2019-01-15 13:33:43 +00:00
<div align="center">
<img src="misc/logo.svg" height="180" />
2018-11-04 23:00:00 +00:00
2019-03-13 20:28:39 +00:00
*µWebSockets.js™ (it's "[micro](https://en.wikipedia.org/wiki/Micro-)") is simple, secure*<sup>[[1]](https://github.com/uNetworking/uWebSockets/tree/master/fuzzing)</sup> *& standards compliant web I/O for the most demanding*<sup>[[2]](https://github.com/uNetworking/uWebSockets/tree/master/benchmarks)</sup> *of JavaScript applications.*
2018-07-28 20:48:22 +00:00
2019-02-10 22:35:51 +00:00
• [TypeScript docs](https://unetworking.github.io/uWebSockets.js/generated/) • [Read more & user manual (C++ project)](https://github.com/uNetworking/uWebSockets/blob/master/misc/READMORE.md)
2019-01-15 13:33:43 +00:00
</div>
2019-03-13 20:28:39 +00:00
#### In a nutshell.
2019-03-13 19:52:46 +00:00
µWebSockets.js is the Google V8 bindings to [µWebSockets](https://github.com/uNetworking/uWebSockets), one of the most efficient web servers available for C++ programming<sup>[[2]](https://github.com/uNetworking/uWebSockets/tree/master/benchmarks)</sup>. Bypassing the entire I/O stack of Node.js allows for unprecedented efficiency in back-end JavaScript - what you build stands on nothing but the best of C and C++. Scales to millions of active WebSockets using half a GB of user space memory<sup>[[3]](https://medium.com/@alexhultman/millions-of-active-websockets-with-node-js-7dc575746a01)</sup>.
2018-12-26 08:15:31 +00:00
```
2019-03-13 19:52:46 +00:00
npm install uNetworking/uWebSockets.js#v15.8.0
2018-12-26 08:15:31 +00:00
```
2019-03-13 20:28:39 +00:00
, or any such tag (see [releases](https://github.com/uNetworking/uWebSockets.js/releases)).
#### Simple.
There are tons of [examples](examples) but here's the gist of it all:
2019-02-10 23:13:51 +00:00
2019-01-15 13:33:43 +00:00
```javascript
2019-03-13 19:52:46 +00:00
const uWS = require('uWebSockets.js');
2019-02-10 23:13:51 +00:00
2019-03-13 19:52:46 +00:00
/* Non-SSL is simply uWS.App() */
uWS.SSLApp({
/* There are tons of SSL options */
2019-02-10 23:13:51 +00:00
key_file_name: 'misc/key.pem',
cert_file_name: 'misc/cert.pem',
}).ws('/*', {
2019-03-13 19:52:46 +00:00
/* For brevity we skip the other events */
2019-02-10 23:13:51 +00:00
message: (ws, message, isBinary) => {
let ok = ws.send(message, isBinary);
}
}).any('/*', (res, req) => {
2019-03-13 19:52:46 +00:00
/* Let's deny all Http */
2019-02-10 23:13:51 +00:00
res.end('Nothing to see here!');
2019-03-13 19:52:46 +00:00
}).listen(9001, (listenSocket) => {
if (listenSocket) {
console.log('Listening to port 9001');
2018-11-04 23:00:00 +00:00
}
2018-10-04 21:18:50 +00:00
});
2018-07-28 20:48:22 +00:00
```
2018-11-03 11:45:56 +00:00
2019-03-13 20:28:39 +00:00
#### Pay what you want.
2019-03-13 19:52:46 +00:00
Commercially developed on a sponsored/consulting basis; BitMEX, Bitfinex and Coinbase are current or previous sponsors. Contact [me, the author](https://github.com/alexhultman) for support, feature development or consulting/contracting.
2019-01-15 13:33:43 +00:00
2019-03-13 19:52:46 +00:00
![](https://raw.githubusercontent.com/uNetworking/uWebSockets/master/misc/2018.png)
2019-01-15 13:33:43 +00:00
2019-03-13 19:52:46 +00:00
*µWebSockets.js is intellectual property licensed Apache 2.0 with limitations on trademark use. Forks must be clearly labelled as such and must not be confused with the original.*