From 9b7006872243ed0742bee16582a5da7c6bbcdf59 Mon Sep 17 00:00:00 2001 From: Ruben Verborgh Date: Tue, 24 Nov 2020 23:25:15 +0100 Subject: [PATCH] feat: Wire up WebSockets. Closes https://github.com/solid/community-server/issues/337 --- config/config-default.json | 1 + config/config-file.json | 1 + config/config-path-routing.json | 1 + config/config-rdf-to-sparql-endpoint.json | 1 + config/config-sparql-endpoint.json | 1 + config/presets/acl.json | 2 +- config/presets/http.json | 10 ++++++++++ config/presets/ldp/operation-handler.json | 12 ++++++------ config/presets/ldp/response-writer.json | 6 ++++++ config/presets/ldp/websockets.json | 12 ++++++++++++ config/presets/setup.json | 2 +- config/presets/storage-wrapper.json | 21 +++++++++++++++------ 12 files changed, 56 insertions(+), 14 deletions(-) create mode 100644 config/presets/ldp/websockets.json diff --git a/config/config-default.json b/config/config-default.json index 094e4c137..7041c27ae 100644 --- a/config/config-default.json +++ b/config/config-default.json @@ -10,6 +10,7 @@ "files-scs:config/presets/ldp/permissions-extractor.json", "files-scs:config/presets/ldp/response-writer.json", "files-scs:config/presets/ldp/request-parser.json", + "files-scs:config/presets/ldp/websockets.json", "files-scs:config/presets/logging.json", "files-scs:config/presets/representation-conversion.json", "files-scs:config/presets/setup.json", diff --git a/config/config-file.json b/config/config-file.json index 5de3a1139..fc34411bc 100644 --- a/config/config-file.json +++ b/config/config-file.json @@ -10,6 +10,7 @@ "files-scs:config/presets/ldp/permissions-extractor.json", "files-scs:config/presets/ldp/response-writer.json", "files-scs:config/presets/ldp/request-parser.json", + "files-scs:config/presets/ldp/websockets.json", "files-scs:config/presets/logging.json", "files-scs:config/presets/representation-conversion.json", "files-scs:config/presets/setup.json", diff --git a/config/config-path-routing.json b/config/config-path-routing.json index efadc2c72..931df203b 100644 --- a/config/config-path-routing.json +++ b/config/config-path-routing.json @@ -10,6 +10,7 @@ "files-scs:config/presets/ldp/permissions-extractor.json", "files-scs:config/presets/ldp/response-writer.json", "files-scs:config/presets/ldp/request-parser.json", + "files-scs:config/presets/ldp/websockets.json", "files-scs:config/presets/logging.json", "files-scs:config/presets/representation-conversion.json", "files-scs:config/presets/setup.json", diff --git a/config/config-rdf-to-sparql-endpoint.json b/config/config-rdf-to-sparql-endpoint.json index 0b2ec8d82..c055e3787 100644 --- a/config/config-rdf-to-sparql-endpoint.json +++ b/config/config-rdf-to-sparql-endpoint.json @@ -10,6 +10,7 @@ "files-scs:config/presets/ldp/permissions-extractor.json", "files-scs:config/presets/ldp/response-writer.json", "files-scs:config/presets/ldp/request-parser.json", + "files-scs:config/presets/ldp/websockets.json", "files-scs:config/presets/logging.json", "files-scs:config/presets/representation-conversion.json", "files-scs:config/presets/setup.json", diff --git a/config/config-sparql-endpoint.json b/config/config-sparql-endpoint.json index 4f5ea3389..9e5b8aea3 100644 --- a/config/config-sparql-endpoint.json +++ b/config/config-sparql-endpoint.json @@ -10,6 +10,7 @@ "files-scs:config/presets/ldp/permissions-extractor.json", "files-scs:config/presets/ldp/response-writer.json", "files-scs:config/presets/ldp/request-parser.json", + "files-scs:config/presets/ldp/websockets.json", "files-scs:config/presets/logging.json", "files-scs:config/presets/representation-conversion.json", "files-scs:config/presets/setup.json", diff --git a/config/presets/acl.json b/config/presets/acl.json index 9d86f9d92..75705289c 100644 --- a/config/presets/acl.json +++ b/config/presets/acl.json @@ -12,7 +12,7 @@ "@id": "urn:solid-server:default:AclManager" }, "WebAclAuthorizer:_resourceStore": { - "@id": "urn:solid-server:default:ResourceStore_Patching" + "@id": "urn:solid-server:default:ResourceStore" } } ] diff --git a/config/presets/http.json b/config/presets/http.json index 5640ea22f..5d3483a34 100644 --- a/config/presets/http.json +++ b/config/presets/http.json @@ -3,6 +3,16 @@ "@graph": [ { "@id": "urn:solid-server:default:ServerFactory", + "@type": "WebSocketServerFactory", + "WebSocketServerFactory:_baseServerFactory": { + "@id": "urn:solid-server:default:ExpressHttpServerFactory" + }, + "WebSocketServerFactory:_webSocketHandler": { + "@id": "urn:solid-server:default:WebSocketHandler" + } + }, + { + "@id": "urn:solid-server:default:ExpressHttpServerFactory", "@type": "ExpressHttpServerFactory", "ExpressHttpServerFactory:_handler": { "@id": "urn:solid-server:default:HttpHandler" diff --git a/config/presets/ldp/operation-handler.json b/config/presets/ldp/operation-handler.json index 3ae8d9011..cc9a9bc1d 100644 --- a/config/presets/ldp/operation-handler.json +++ b/config/presets/ldp/operation-handler.json @@ -8,37 +8,37 @@ { "@type": "DeleteOperationHandler", "DeleteOperationHandler:_store": { - "@id": "urn:solid-server:default:ResourceStore_Patching" + "@id": "urn:solid-server:default:ResourceStore" } }, { "@type": "GetOperationHandler", "GetOperationHandler:_store": { - "@id": "urn:solid-server:default:ResourceStore_Patching" + "@id": "urn:solid-server:default:ResourceStore" } }, { "@type": "HeadOperationHandler", "HeadOperationHandler:_store": { - "@id": "urn:solid-server:default:ResourceStore_Patching" + "@id": "urn:solid-server:default:ResourceStore" } }, { "@type": "PatchOperationHandler", "PatchOperationHandler:_store": { - "@id": "urn:solid-server:default:ResourceStore_Patching" + "@id": "urn:solid-server:default:ResourceStore" } }, { "@type": "PostOperationHandler", "PostOperationHandler:_store": { - "@id": "urn:solid-server:default:ResourceStore_Patching" + "@id": "urn:solid-server:default:ResourceStore" } }, { "@type": "PutOperationHandler", "PutOperationHandler:_store": { - "@id": "urn:solid-server:default:ResourceStore_Patching" + "@id": "urn:solid-server:default:ResourceStore" } } ] diff --git a/config/presets/ldp/response-writer.json b/config/presets/ldp/response-writer.json index 778e23658..12d2c26b3 100644 --- a/config/presets/ldp/response-writer.json +++ b/config/presets/ldp/response-writer.json @@ -26,6 +26,12 @@ "LinkRelMetadataWriter:_headerMap_value": "type" } ] + }, + { + "@type": "WebSocketMetadataWriter", + "WebSocketMetadataWriter:_settings_port": { + "@id": "urn:solid-server:default:variable:port" + } } ] }, diff --git a/config/presets/ldp/websockets.json b/config/presets/ldp/websockets.json new file mode 100644 index 000000000..abf2d0903 --- /dev/null +++ b/config/presets/ldp/websockets.json @@ -0,0 +1,12 @@ +{ + "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^1.0.0/components/context.jsonld", + "@graph": [ + { + "@id": "urn:solid-server:default:WebSocketHandler", + "@type": "UnsecureWebSocketsProtocol", + "UnsecureWebSocketsProtocol:_source": { + "@id": "urn:solid-server:default:ResourceStore" + } + } + ] +} diff --git a/config/presets/setup.json b/config/presets/setup.json index 81132d851..5b849c784 100644 --- a/config/presets/setup.json +++ b/config/presets/setup.json @@ -8,7 +8,7 @@ "@id": "urn:solid-server:default:ServerFactory" }, "Setup:_store": { - "@id": "urn:solid-server:default:ResourceStore_Patching" + "@id": "urn:solid-server:default:ResourceStore" }, "Setup:_aclManager": { "@id": "urn:solid-server:default:AclManager" diff --git a/config/presets/storage-wrapper.json b/config/presets/storage-wrapper.json index 205164566..2e8e0ae89 100644 --- a/config/presets/storage-wrapper.json +++ b/config/presets/storage-wrapper.json @@ -2,12 +2,11 @@ "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^1.0.0/components/context.jsonld", "@graph": [ { - "@id": "urn:solid-server:default:ResourceLocker", - "@type": "WrappedExpiringResourceLocker", - "WrappedExpiringResourceLocker:_locker": { - "@type": "SingleThreadedResourceLocker" - }, - "WrappedExpiringResourceLocker:_expiration": 3000 + "@id": "urn:solid-server:default:ResourceStore", + "@type": "MonitoringStore", + "MonitoringStore:_source": { + "@id": "urn:solid-server:default:ResourceStore_Patching" + } }, { @@ -28,6 +27,16 @@ } }, + { + "@id": "urn:solid-server:default:ResourceLocker", + "@type": "WrappedExpiringResourceLocker", + "WrappedExpiringResourceLocker:_locker": { + "@type": "SingleThreadedResourceLocker" + }, + "WrappedExpiringResourceLocker:_expiration": 3000 + }, + + { "@id": "urn:solid-server:default:ResourceStore_ToTurtle", "@type": "RepresentationConvertingStore",