Skip to content

Commit 3217693

Browse files
added http/2 support
1 parent 6a10598 commit 3217693

5 files changed

Lines changed: 70 additions & 4 deletions

File tree

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
![KOACH](https://github.com/SystangoTechnologies/Koach/blob/master/static/koach.png)
22

33
## KOACH
4-
Production ready boilerplate for building APIs with [koa2](https://github.com/koajs/koa/) and mongodb.
4+
Production ready boilerplate for building APIs with [koa2](https://github.com/koajs/koa/)using mongodb as the database and http/2 as the communication protocol.
55

66
## Description
77
This project covers basic necessities of most APIs.
88
* Authentication (passport & jwt)
99
* Database (mongoose)
1010
* Testing (mocha)
11+
* http/2 support for websites and apis
1112
* Doc generation with apidoc
1213
* linting using standard
1314

@@ -30,6 +31,7 @@ git clone https://github.com/SystangoTechnologies/Koach.git
3031
* [koa-convert](https://github.com/koajs/convert)
3132
* [MongoDB](http://mongodb.org/)
3233
* [Mongoose](http://mongoosejs.com/)
34+
* [http/2](https://github.com/molnarg/node-http2)
3335
* [Passport](http://passportjs.org/)
3436
* [Nodemon](http://nodemon.io/)
3537
* [Mocha](https://mochajs.org/)
@@ -41,13 +43,16 @@ git clone https://github.com/SystangoTechnologies/Koach.git
4143
```
4244
├── bin
4345
│ └── server.js # Bootstrapping and entry point
46+
├── cert
47+
│ ├── server.cert # SSL certificate
48+
│ └── server.key # SSL certificate key
4449
├── config # Server configuration settings
4550
│ ├── env # Environment specific config
4651
│ │ ├── common.js
4752
│ │ ├── development.js
4853
│ │ ├── production.js
4954
│ │ └── test.js
50-
│ ├── index.js # Config entrypoint - exports config according to envionrment and commons
55+
│ ├── index.js # Config entrypoint
5156
│ └── passport.js # Passportjs config of strategies
5257
├── src # Source code
5358
│ ├── modules

bin/server.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,20 @@ import passport from 'koa-passport'
88
import mount from 'koa-mount'
99
import serve from 'koa-static'
1010
import helmet from 'koa-helmet'
11+
import http2 from 'http2'
12+
import fs from 'fs'
1113
import config from '../config'
1214
import { errorMiddleware } from '../src/middleware'
1315

1416
const app = new Koa()
1517
app.keys = [config.session]
1618

19+
// replace these with your certificate information
20+
const options = {
21+
cert: fs.readFileSync('./cert/localhost.cert'),
22+
key: fs.readFileSync('./cert/localhost.key')
23+
}
24+
1725
// --------------------- start -------------------------
1826
//Instead of calling convert for all legacy middlewares
1927
//just use the following to convert them all at once
@@ -46,8 +54,15 @@ app.use(passport.session())
4654
const modules = require('../src/modules')
4755
modules(app)
4856

49-
app.listen(config.port, () => {
50-
console.log(`Server started on ${config.port}`)
57+
//Using http2 to work with http/2 instead of http/1.x
58+
http2
59+
.createServer(options, app.callback())
60+
.listen(config.port, () => {
61+
console.log(`Server started on ${config.port}`)
5162
})
5263

64+
//app.listen(config.port, () => {
65+
//console.log(`Server started on ${config.port}`)
66+
//})
67+
5368
export default app

cert/localhost.cert

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIC+zCCAeOgAwIBAgIJAOQdL6as8UR7MA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV
3+
BAMMCWxvY2FsaG9zdDAeFw0xNzA0MTkwOTQ5NTBaFw0yNzA0MTcwOTQ5NTBaMBQx
4+
EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
5+
ggEBAN4IOLr+LT4ACSO8eovdRoeZ0ybLsh9779N5F2gsA0gUTMXiaKZb+/wHJJYx
6+
Kv4lIghTDBaqfRE/wo1uK2+0p2vlxOCinbTp6sm7NW3aX5LfaVsDvFRlLwNbH2ld
7+
VA+lc/sLkVEWOK4twSf6enQ3rDElg5Qw5BWAurEpv6RNGGjLZb8T1mriDHihr6fG
8+
NKm2yxjPEZw0iL4oPgyqjjCIppLamMgBR/y6nxztfFBrckgcToWdL2Yb9Y/iNjwB
9+
KmsNRx0aFeXKB0fWNF6S0I1pQ24NYpjbOTilC5adHg1mfky1tKRyPYXSSuYHwZg1
10+
PMVgXPefnrgdYpvJQcgyTMM4xAcCAwEAAaNQME4wHQYDVR0OBBYEFJTymMh5e2/5
11+
cXZylzlA+SsYQd6qMB8GA1UdIwQYMBaAFJTymMh5e2/5cXZylzlA+SsYQd6qMAwG
12+
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAMR1WpX/NiRRrpjAH7o5dNJv
13+
oYQPPXW5XTr/oHwFQpB+rDAus/GYJ0MmeGX4XkjgDKjENay+gMb1NX8FI3g7KWp3
14+
GqLsVZ9fYAc13bBVJeYC9Qr1wv6vBcTHslNDrOiCKEDlD67aTCoD+Q7HkSZPoJ9O
15+
1htspTB6Yo2hLI6UVRVh1Ho/gKbK8xxG2/5um41dSKvgfzxo71DxIiQj7dJ3RmXC
16+
i+Z7MfWPHrtvKdb9W5hTgRVl1ooLClTsk/Urkabbi/NhfWG3p60LwXEfH++kMgTw
17+
geilBo7oqBopQ9KtH7yS2kG/YZdCZmYxF38v2NonqVW2VWRCf0WEkFCc6oj9Ep8=
18+
-----END CERTIFICATE-----

cert/localhost.key

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEpAIBAAKCAQEA3gg4uv4tPgAJI7x6i91Gh5nTJsuyH3vv03kXaCwDSBRMxeJo
3+
plv7/AckljEq/iUiCFMMFqp9ET/CjW4rb7Sna+XE4KKdtOnqybs1bdpfkt9pWwO8
4+
VGUvA1sfaV1UD6Vz+wuRURY4ri3BJ/p6dDesMSWDlDDkFYC6sSm/pE0YaMtlvxPW
5+
auIMeKGvp8Y0qbbLGM8RnDSIvig+DKqOMIimktqYyAFH/LqfHO18UGtySBxOhZ0v
6+
Zhv1j+I2PAEqaw1HHRoV5coHR9Y0XpLQjWlDbg1imNs5OKULlp0eDWZ+TLW0pHI9
7+
hdJK5gfBmDU8xWBc95+euB1im8lByDJMwzjEBwIDAQABAoIBAC6QKtWMWJCYEVKd
8+
RFXwocnuSInqTgCsTS9cRbxi/o0vNKqLQMcio0XHebTFuu5xeyGjyPU36+KiLHrc
9+
j99tU28dUJyLfedi5wpHaH0RPtneYInlzqkkTye1BHFkUSy21gvf8SnAL0LX9Zoc
10+
vXGB+2qTI3UAi9S2mnBtAPPD90qCeT2K5PIFKdNXaT6ssoZWMl7wu9Be5ardcOnR
11+
i5t5JgrNA6XsUcBYsjRHRKFkc9So+bFvCADg8MWc1FpiWqr7E9oZqLyaHlfSO2g3
12+
PCRSPyuuEYh94OthU++zQ1YUBJYPHu76BAvipFlrU9km48OcZ9GKI1LgvOjMxPtH
13+
ng8b5gECgYEA+/GKZ/iAOkJTYE1Jp4FohKOn6wi3QYbHJqQ+drAZk3U94HtU1uaj
14+
I5LfPBmC7ESjZb2x1Faizd6Lqg9NBcw1OHy6VSX703CPsvw1R9wiAN+67a8CPfpg
15+
KUAtEsksS7xGyip0PyloelrACZtwHC3NxYbeB75T3Jb3C8yEkUwnvDcCgYEA4Ztk
16+
bjTNL6HeUVOFeD1NhFmtW5pxPrCdqxdQkqPPTqVz64EgOpxN+Q/9GQMudgx48KI0
17+
yoWe+RRTYbimCr4HdtZcuEm8ale2NACQtl9aRK5DAvKASz0I/qFnpJLElCCbOmGv
18+
jsqOd4JYdXH9gr5P64VIgK4DpD1DzFVyQI4gbrECgYEAmKgscv8xwxs5JdruzB4v
19+
VF9Nea5YS838kb9nUcc2WBDsIz7XkzdAlmeB+AqFN+AHGbitLboo/5DfE3Yd92ta
20+
vBVnWfyf7+f+SjdjmV0bBWiK/UXTl/ZDmfsW1JEs098LDahXs4XFlo2yWp/ieFCQ
21+
pCUqF4sNiVW372BG2ztHwFUCgYAdx9BjB89KCVj6bUcCDz2LSfcrT2DBgLjfW82D
22+
/eGgpRB/NuVVN0rHpMepJJVeedkBErhbP3YztO4oySIJ6vm7QyKsJPedJgTkKmrv
23+
1/hndoVb/zzWMbFdQ1sWC1Wto/w5oal19OEHf4pDvo9TUeHk2gwvCElsxbWMZH8X
24+
bGt1kQKBgQC+7z1M1cpRPyI3maGCeh3i39mq6H5Np8xEteKu4vG86ApgKvICIwu3
25+
LmqQbgJWYUhwMuEaeA8/SZZoD/wmTb4xPyq/Bylw3D96zEW9rcHg9ozg2nP0NcHT
26+
RlgqiRZRhfB9ulvlKDDirXvpRFApOm9U4+0W1ITBLu8B4TWPhdKyRg==
27+
-----END RSA PRIVATE KEY-----

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"babel-preset-stage-0": "^6.5.0",
4040
"bcrypt": "^1.0.2",
4141
"glob": "^7.0.0",
42+
"http2": "^3.3.6",
4243
"jsonwebtoken": "^7.1.9",
4344
"koa": "^2.2.0",
4445
"koa-bodyparser": "^4.2.0",

0 commit comments

Comments
 (0)