Skip to content

Commit 3d3a0f8

Browse files
authored
Merge pull request #97 from JeringTech/switch-to-http-2
Switch to http 2
2 parents 17810e0 + 03f63f9 commit 3d3a0f8

30 files changed

+2008
-1646
lines changed

Changelog.md

+9-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@ This project uses [semantic versioning](http://semver.org/spec/v2.0.0.html). Ref
33
*[Semantic Versioning in Practice](https://www.jering.tech/articles/semantic-versioning-in-practice)*
44
for an overview of semantic versioning.
55

6-
## [Unreleased](https://github.com/JeringTech/Javascript.NodeJS/compare/5.4.4...HEAD)
6+
## [Unreleased](https://github.com/JeringTech/Javascript.NodeJS/compare/6.0.0-beta.0...HEAD)
7+
8+
## [6.0.0-beta.0](https://github.com/JeringTech/Javascript.NodeJS/compare/5.4.4...6.0.0-beta.0) - Feb 10, 2021
9+
### Additions
10+
- Added NetCoreApp3.0 as a target.
11+
- Library uses HTTP/2 to communicate with Node.js when using NetCoreApp3.0 binaries.
12+
### Changes
13+
- **Breaking**: Simplified the surface area of `IHttpClientService`. Users can use DI to register a custom implementation of this service
14+
to customize their `HttpClient`.
715

816
## [5.4.4](https://github.com/JeringTech/Javascript.NodeJS/compare/5.4.3...5.4.4) - Jan 18, 2021
917
### Fixes

perf/NodeJS/Jering.Javascript.NodeJS.Performance.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp3</TargetFramework>
4+
<TargetFramework>netcoreapp3.1</TargetFramework>
55
<OutputType>Exe</OutputType>
66
<IsPackable>false</IsPackable>
77
<CodeAnalysisRuleSet>../../Jering.Javascript.NodeJS.ruleset</CodeAnalysisRuleSet>

perf/NodeJS/PoolThreadingBenchmarks.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class PoolThreadingBenchmarks
1515
private LockFreeMethod _lockFree;
1616
private LockMethod _lock;
1717

18-
private IEnumerable<int> _source = Enumerable.Range(0, 2000);
18+
private readonly IEnumerable<int> _source = Enumerable.Range(0, 2000);
1919

2020
[GlobalSetup]
2121
public void Setup()

perf/NodeJS/packages.lock.json

+72-62
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"version": 1,
33
"dependencies": {
4-
".NETCoreApp,Version=v3.0": {
4+
".NETCoreApp,Version=v3.1": {
55
"BenchmarkDotNet": {
66
"type": "Direct",
77
"requested": "[0.12.0, )",
@@ -46,48 +46,40 @@
4646
"resolved": "2.4.3",
4747
"contentHash": "U2FC9Y8NyIxxU6MpFFdWWu1xwiqz/61v/Doou7kmVjpeIEMLWyiNNkzNlSE84kyJ0O1LKApuEj5z48Ow0Hi4OQ=="
4848
},
49-
"Jering.IocServices.System.Net.Http": {
50-
"type": "Transitive",
51-
"resolved": "0.4.0",
52-
"contentHash": "EyaYjK7wTMfXRQ1xUC98+vFiV5Tkg0NW4Z5OjWa4dnY6Z6nD5JQokZeobzohT0suQichbeX/7AOLtiQNyEcaLQ==",
53-
"dependencies": {
54-
"NETStandard.Library": "1.6.1"
55-
}
56-
},
5749
"Microsoft.AspNetCore.Hosting.Abstractions": {
5850
"type": "Transitive",
59-
"resolved": "2.1.0",
60-
"contentHash": "1TQgBfd/NPZLR2o/h6l5Cml2ZCF5hsyV4h9WEwWwAIavrbdTnaNozGGcTOd4AOgQvogMM9UM1ajflm9Cwd0jLQ==",
51+
"resolved": "2.2.0",
52+
"contentHash": "ubycklv+ZY7Kutdwuy1W4upWcZ6VFR8WUXU7l7B2+mvbDBBPAcfpi+E+Y5GFe+Q157YfA3C49D2GCjAZc7Mobw==",
6153
"dependencies": {
62-
"Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.1.0",
63-
"Microsoft.AspNetCore.Http.Abstractions": "2.1.0",
64-
"Microsoft.Extensions.Hosting.Abstractions": "2.1.0"
54+
"Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.2.0",
55+
"Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
56+
"Microsoft.Extensions.Hosting.Abstractions": "2.2.0"
6557
}
6658
},
6759
"Microsoft.AspNetCore.Hosting.Server.Abstractions": {
6860
"type": "Transitive",
69-
"resolved": "2.1.0",
70-
"contentHash": "YTKMi2vHX6P+WHEVpW/DS+eFHnwivCSMklkyamcK1ETtc/4j8H3VR0kgW8XIBqukNxhD8k5wYt22P7PhrWSXjQ==",
61+
"resolved": "2.2.0",
62+
"contentHash": "1PMijw8RMtuQF60SsD/JlKtVfvh4NORAhF4wjysdABhlhTrYmtgssqyncR0Stq5vqtjplZcj6kbT4LRTglt9IQ==",
7163
"dependencies": {
72-
"Microsoft.AspNetCore.Http.Features": "2.1.0",
73-
"Microsoft.Extensions.Configuration.Abstractions": "2.1.0"
64+
"Microsoft.AspNetCore.Http.Features": "2.2.0",
65+
"Microsoft.Extensions.Configuration.Abstractions": "2.2.0"
7466
}
7567
},
7668
"Microsoft.AspNetCore.Http.Abstractions": {
7769
"type": "Transitive",
78-
"resolved": "2.1.0",
79-
"contentHash": "vbFDyKsSYBnxl3+RABtN79b0vsTcG66fDY8vD6Nqvu9uLtSej70Q5NcbGlnN6bJpZci5orSdgFTHMhBywivDPg==",
70+
"resolved": "2.2.0",
71+
"contentHash": "Nxs7Z1q3f1STfLYKJSVXCs1iBl+Ya6E8o4Oy1bCxJ/rNI44E/0f6tbsrVqAWfB7jlnJfyaAtIalBVxPKUPQb4Q==",
8072
"dependencies": {
81-
"Microsoft.AspNetCore.Http.Features": "2.1.0",
73+
"Microsoft.AspNetCore.Http.Features": "2.2.0",
8274
"System.Text.Encodings.Web": "4.5.0"
8375
}
8476
},
8577
"Microsoft.AspNetCore.Http.Features": {
8678
"type": "Transitive",
87-
"resolved": "2.1.0",
88-
"contentHash": "UmkUePxRjsQW0j5euFFscBwjvTu25b8+qIK/2fI3GvcqQ+mkwgbWNAT8b/Gkoei1m2bTWC07lSdutuRDPPLcJA==",
79+
"resolved": "2.2.0",
80+
"contentHash": "ziFz5zH8f33En4dX81LW84I6XrYXKf9jg6aM39cM+LffN9KJahViKZ61dGMSO2gd3e+qe5yBRwsesvyqlZaSMg==",
8981
"dependencies": {
90-
"Microsoft.Extensions.Primitives": "2.1.0"
82+
"Microsoft.Extensions.Primitives": "2.2.0"
9183
}
9284
},
9385
"Microsoft.CodeAnalysis.Analyzers": {
@@ -191,51 +183,63 @@
191183
},
192184
"Microsoft.Extensions.DependencyInjection": {
193185
"type": "Transitive",
194-
"resolved": "3.0.0",
195-
"contentHash": "yDsuNA/BT4j9qrcRs0NUNHQAJfywFWX18ZZ+shxXJL+/nIfz3vhuRTfnYgvFeQlNBlgmgdSjOcs4ajgoS6Q/Ng==",
186+
"resolved": "5.0.1",
187+
"contentHash": "//mDNrYeiJ0eh/awFhDFJQzkRVra/njU5Y4fyK7X29g5HScrzbUkKOKlyTtygthcGFt4zNC8G5CFCjb/oizomA==",
196188
"dependencies": {
197-
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.0.0"
189+
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0"
198190
}
199191
},
200192
"Microsoft.Extensions.DependencyInjection.Abstractions": {
201193
"type": "Transitive",
202-
"resolved": "3.0.0",
203-
"contentHash": "ofQRroDlzJ0xKOtzNuaVt6QKNImFkhkG0lIMpGl7PtXnIf5SuLWBeiQZAP8DNSxDBJJdcsPkiJiMYK2WA5H8dQ=="
194+
"resolved": "5.0.0",
195+
"contentHash": "ORj7Zh81gC69TyvmcUm9tSzytcy8AVousi+IVRAI8nLieQjOFryRusSFh7+aLk16FN9pQNqJAiMd7BTKINK0kA=="
204196
},
205197
"Microsoft.Extensions.FileProviders.Abstractions": {
206198
"type": "Transitive",
207-
"resolved": "2.1.0",
208-
"contentHash": "itv+7XBu58pxi8mykxx9cUO1OOVYe0jmQIZVSZVp5lOcLxB7sSV2bnHiI1RSu6Nxne/s6+oBla3ON5CCMSmwhQ==",
199+
"resolved": "2.2.0",
200+
"contentHash": "EcnaSsPTqx2MGnHrmWOD0ugbuuqVT8iICqSqPzi45V5/MA1LjUNb0kwgcxBGqizV1R+WeBK7/Gw25Jzkyk9bIw==",
209201
"dependencies": {
210-
"Microsoft.Extensions.Primitives": "2.1.0"
202+
"Microsoft.Extensions.Primitives": "2.2.0"
211203
}
212204
},
213205
"Microsoft.Extensions.Hosting.Abstractions": {
214206
"type": "Transitive",
215-
"resolved": "2.1.0",
216-
"contentHash": "BpMaoBxdXr5VD0yk7rYN6R8lAU9X9JbvsPveNdKT+llIn3J5s4sxpWqaSG/NnzTzTLU5eJE5nrecTl7clg/7dQ==",
207+
"resolved": "2.2.0",
208+
"contentHash": "+k4AEn68HOJat5gj1TWa6X28WlirNQO9sPIIeQbia+91n03esEtMSSoekSTpMjUzjqtJWQN3McVx0GvSPFHF/Q==",
217209
"dependencies": {
218-
"Microsoft.Extensions.Configuration.Abstractions": "2.1.0",
219-
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0",
220-
"Microsoft.Extensions.FileProviders.Abstractions": "2.1.0",
221-
"Microsoft.Extensions.Logging.Abstractions": "2.1.0"
210+
"Microsoft.Extensions.Configuration.Abstractions": "2.2.0",
211+
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
212+
"Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
213+
"Microsoft.Extensions.Logging.Abstractions": "2.2.0"
214+
}
215+
},
216+
"Microsoft.Extensions.Http": {
217+
"type": "Transitive",
218+
"resolved": "5.0.0",
219+
"contentHash": "kT1ijDKZuSUhBtYoC1sXrmVKP7mA08h9Xrsr4VrS/QOtiKCEtUTTd7dd3XI9dwAb46tZSak13q/zdIcr4jqbyg==",
220+
"dependencies": {
221+
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
222+
"Microsoft.Extensions.Logging": "5.0.0",
223+
"Microsoft.Extensions.Logging.Abstractions": "5.0.0",
224+
"Microsoft.Extensions.Options": "5.0.0"
222225
}
223226
},
224227
"Microsoft.Extensions.Logging": {
225228
"type": "Transitive",
226-
"resolved": "3.0.0",
227-
"contentHash": "rxs1i2denq0Sv0XMvAeISK7AskV5x7aihvlIlepJKFfkbE6PgbeXfPOElD0kf3Wr2Roo57ASQa5xUL9LTHWChA==",
229+
"resolved": "5.0.0",
230+
"contentHash": "MgOwK6tPzB6YNH21wssJcw/2MKwee8b2gI7SllYfn6rvTpIrVvVS5HAjSU2vqSku1fwqRvWP0MdIi14qjd93Aw==",
228231
"dependencies": {
229-
"Microsoft.Extensions.Configuration.Binder": "3.0.0",
230-
"Microsoft.Extensions.DependencyInjection": "3.0.0",
231-
"Microsoft.Extensions.Logging.Abstractions": "3.0.0",
232-
"Microsoft.Extensions.Options": "3.0.0"
232+
"Microsoft.Extensions.DependencyInjection": "5.0.0",
233+
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
234+
"Microsoft.Extensions.Logging.Abstractions": "5.0.0",
235+
"Microsoft.Extensions.Options": "5.0.0",
236+
"System.Diagnostics.DiagnosticSource": "5.0.0"
233237
}
234238
},
235239
"Microsoft.Extensions.Logging.Abstractions": {
236240
"type": "Transitive",
237-
"resolved": "3.0.0",
238-
"contentHash": "+PsosTYZn+omucI0ff9eywo9QcPLwcbIWf7dz7ZLM1zGR8gVZXJ3wo6+tkuIedUNW5iWENlVJPEvrGjiVeoNNQ=="
241+
"resolved": "5.0.0",
242+
"contentHash": "NxP6ahFcBnnSfwNBi2KH2Oz8Xl5Sm2krjId/jRR3I7teFphwiUoUeZPwTNA21EX+5PtjqmyAvKaOeBXcJjcH/w=="
239243
},
240244
"Microsoft.Extensions.Logging.Configuration": {
241245
"type": "Transitive",
@@ -258,11 +262,11 @@
258262
},
259263
"Microsoft.Extensions.Options": {
260264
"type": "Transitive",
261-
"resolved": "3.0.0",
262-
"contentHash": "aZuVhN/TC872Yb55nrb7an82sfSAdNYxIyzu3zbYHOnhwal5hdkBUxzuoYj1khI2sw0tWq6i82i624zEFmiJhg==",
265+
"resolved": "5.0.0",
266+
"contentHash": "CBvR92TCJ5uBIdd9/HzDSrxYak+0W/3+yxrNg8Qm6Bmrkh5L+nu6m3WeazQehcZ5q1/6dDA7J5YdQjim0165zg==",
263267
"dependencies": {
264-
"Microsoft.Extensions.DependencyInjection.Abstractions": "3.0.0",
265-
"Microsoft.Extensions.Primitives": "3.0.0"
268+
"Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0",
269+
"Microsoft.Extensions.Primitives": "5.0.0"
266270
}
267271
},
268272
"Microsoft.Extensions.Options.ConfigurationExtensions": {
@@ -278,8 +282,8 @@
278282
},
279283
"Microsoft.Extensions.Primitives": {
280284
"type": "Transitive",
281-
"resolved": "3.0.0",
282-
"contentHash": "6gwewTbmOh+ZVBicVkL1XRp79sx4O7BVY6Yy+7OYZdwn3pyOKe9lOam+3gXJ3TZMjhJZdV0Ub8hxHt2vkrmN5Q=="
285+
"resolved": "5.0.0",
286+
"contentHash": "cI/VWn9G1fghXrNDagX9nYaaB/nokkZn0HYAawGaELQrl8InSezfe9OnfPZLcJq3esXxygh3hkq2c3qoV3SDyQ=="
283287
},
284288
"Microsoft.NETCore.Platforms": {
285289
"type": "Transitive",
@@ -491,6 +495,11 @@
491495
"System.Runtime": "4.3.0"
492496
}
493497
},
498+
"System.Diagnostics.DiagnosticSource": {
499+
"type": "Transitive",
500+
"resolved": "5.0.0",
501+
"contentHash": "tCQTzPsGZh/A9LhhA6zrqCRV4hOHsK90/G7q3Khxmn6tnB1PuNU0cRaKANP2AWcF9bn0zsuOoZOSrHuJk6oNBA=="
502+
},
494503
"System.Diagnostics.FileVersionInfo": {
495504
"type": "Transitive",
496505
"resolved": "4.3.0",
@@ -1057,13 +1066,13 @@
10571066
},
10581067
"System.Text.Encodings.Web": {
10591068
"type": "Transitive",
1060-
"resolved": "4.5.0",
1061-
"contentHash": "Xg4G4Indi4dqP1iuAiMSwpiWS54ZghzR644OtsRCm/m/lBMG8dUBhLVN7hLm8NNrNTR+iGbshCPTwrvxZPlm4g=="
1069+
"resolved": "5.0.0",
1070+
"contentHash": "EEslUvHKll1ftizbn20mX3Ix/l4Ygk/bdJ2LY6/X6FlGaP0RIhKMo9nS6JIGnKKT6KBP2PGj6JC3B9/ZF6ErqQ=="
10621071
},
10631072
"System.Text.Json": {
10641073
"type": "Transitive",
1065-
"resolved": "4.6.0",
1066-
"contentHash": "4F8Xe+JIkVoDJ8hDAZ7HqLkjctN/6WItJIzQaifBwClC7wmoLSda/Sv2i6i1kycqDb3hWF4JCVbpAweyOKHEUA=="
1074+
"resolved": "5.0.1",
1075+
"contentHash": "/UM3UK1dXKl8Ybysg/21gM4S8DJgkR+yLU8JwqCVbuNqQNImelntgYFAN5QxR8sJJ1kMx//hOUdf0lltosi8cQ=="
10671076
},
10681077
"System.Text.RegularExpressions": {
10691078
"type": "Transitive",
@@ -1218,12 +1227,13 @@
12181227
"jering.javascript.nodejs": {
12191228
"type": "Project",
12201229
"dependencies": {
1221-
"Jering.IocServices.System.Net.Http": "0.4.0",
1222-
"Microsoft.AspNetCore.Hosting.Abstractions": "2.1.0",
1223-
"Microsoft.Extensions.DependencyInjection": "2.1.0",
1224-
"Microsoft.Extensions.Logging": "2.1.0",
1225-
"Microsoft.Extensions.Options": "2.1.0",
1226-
"System.Text.Json": "4.6.0"
1230+
"Microsoft.AspNetCore.Hosting.Abstractions": "2.2.0",
1231+
"Microsoft.Extensions.DependencyInjection": "5.0.1",
1232+
"Microsoft.Extensions.Http": "5.0.0",
1233+
"Microsoft.Extensions.Logging": "5.0.0",
1234+
"Microsoft.Extensions.Options": "5.0.0",
1235+
"System.Text.Encodings.Web": "5.0.0",
1236+
"System.Text.Json": "5.0.1"
12271237
}
12281238
}
12291239
}

src/NodeJS/Javascript/InvocationData/ModuleSourceType.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
enum ModuleSourceType {
1+
const enum ModuleSourceType {
22
Cache,
33
File,
44
String,

src/NodeJS/Javascript/Servers/OutOfProcess/Http/HttpServer.ts src/NodeJS/Javascript/Servers/OutOfProcess/Http/Http11Server.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ server.on('clientError', serverOnClientError);
5656
// Start server
5757
server.listen(parseInt(args.port), 'localhost', serverOnListeningListener);
5858

59-
function serverOnRequestListener(req, res) {
59+
function serverOnRequestListener(req: http.IncomingMessage, res: http.ServerResponse) {
6060
const bodyChunks = [];
6161
req.
6262
on('data', chunk => bodyChunks.push(chunk)).
@@ -220,7 +220,7 @@ function serverOnClientError(error: Error, socket: stream.Duplex) {
220220
// Send timeout details to client for debugging - this shouldn't fire but there have been various node http server timeout issues in the past.
221221
// The socket won't actually get closed (the timeout function needs to do that manually).
222222
function serverOnTimeout(socket: Socket) {
223-
console.error(`Ignoring unexpected socket timeout for address ${socket.remoteAddress}, port ${socket.remotePort}`);
223+
console.log(`[Node.js HTTP server] Ignoring unexpected socket timeout for address ${socket.remoteAddress}, port ${socket.remotePort}`);
224224
}
225225

226226
function serverOnListeningListener() {
@@ -270,14 +270,14 @@ function parseArgs(args: string[]) {
270270
function exitWhenParentExits(parentPid: number, ignoreSigint: boolean, pollIntervalMS: number) {
271271
setInterval(() => {
272272
if (!processExists(parentPid)) {
273-
console.log(`Parent process (pid: ${parentPid}) exited. Exiting this process...`);
273+
console.log(`[Node.js HTTP server] Parent process (pid: ${parentPid}) exited. Exiting this process...`);
274274
process.exit();
275275
}
276276
}, pollIntervalMS);
277277

278278
if (ignoreSigint) {
279279
process.on('SIGINT', () => {
280-
console.log('Received SIGINT. Waiting for .NET process to exit...');
280+
console.log('[Node.js HTTP server] Received SIGINT. Waiting for .NET process to exit...');
281281
});
282282
}
283283
}

0 commit comments

Comments
 (0)