mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
feat: Export WebSocket classes.
This commit is contained in:
parent
29b659b55f
commit
4a7ea4ad46
5
index.ts
5
index.ts
@ -24,6 +24,7 @@ export * from './src/ldp/http/metadata/MetadataExtractor';
|
|||||||
export * from './src/ldp/http/metadata/MetadataParser';
|
export * from './src/ldp/http/metadata/MetadataParser';
|
||||||
export * from './src/ldp/http/metadata/MetadataWriter';
|
export * from './src/ldp/http/metadata/MetadataWriter';
|
||||||
export * from './src/ldp/http/metadata/SlugParser';
|
export * from './src/ldp/http/metadata/SlugParser';
|
||||||
|
export * from './src/ldp/http/metadata/WebSocketMetadataWriter';
|
||||||
|
|
||||||
// LDP/HTTP/Response
|
// LDP/HTTP/Response
|
||||||
export * from './src/ldp/http/response/CreatedResponseDescription';
|
export * from './src/ldp/http/response/CreatedResponseDescription';
|
||||||
@ -72,6 +73,7 @@ export * from './src/ldp/representation/ResourceIdentifier';
|
|||||||
|
|
||||||
// LDP
|
// LDP
|
||||||
export * from './src/ldp/AuthenticatedLdpHandler';
|
export * from './src/ldp/AuthenticatedLdpHandler';
|
||||||
|
export * from './src/ldp/UnsecureWebSocketsProtocol';
|
||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
export * from './src/logging/LazyLogger';
|
export * from './src/logging/LazyLogger';
|
||||||
@ -88,6 +90,8 @@ export * from './src/server/ExpressHttpServerFactory';
|
|||||||
export * from './src/server/HttpHandler';
|
export * from './src/server/HttpHandler';
|
||||||
export * from './src/server/HttpRequest';
|
export * from './src/server/HttpRequest';
|
||||||
export * from './src/server/HttpResponse';
|
export * from './src/server/HttpResponse';
|
||||||
|
export * from './src/server/WebSocketServerFactory';
|
||||||
|
export * from './src/server/WebSocketHandler';
|
||||||
|
|
||||||
// Storage/Accessors
|
// Storage/Accessors
|
||||||
export * from './src/storage/accessors/DataAccessor';
|
export * from './src/storage/accessors/DataAccessor';
|
||||||
@ -122,6 +126,7 @@ export * from './src/storage/Conditions';
|
|||||||
export * from './src/storage/DataAccessorBasedStore';
|
export * from './src/storage/DataAccessorBasedStore';
|
||||||
export * from './src/storage/FileIdentifierMapper';
|
export * from './src/storage/FileIdentifierMapper';
|
||||||
export * from './src/storage/LockingResourceStore';
|
export * from './src/storage/LockingResourceStore';
|
||||||
|
export * from './src/storage/MonitoringStore';
|
||||||
export * from './src/storage/PassthroughStore';
|
export * from './src/storage/PassthroughStore';
|
||||||
export * from './src/storage/PatchingStore';
|
export * from './src/storage/PatchingStore';
|
||||||
export * from './src/storage/RepresentationConvertingStore';
|
export * from './src/storage/RepresentationConvertingStore';
|
||||||
|
@ -2,15 +2,21 @@ import type { HttpResponse } from '../../../server/HttpResponse';
|
|||||||
import { addHeader } from '../../../util/HeaderUtil';
|
import { addHeader } from '../../../util/HeaderUtil';
|
||||||
import { MetadataWriter } from './MetadataWriter';
|
import { MetadataWriter } from './MetadataWriter';
|
||||||
|
|
||||||
|
interface WebSocketSettings {
|
||||||
|
hostname?: string;
|
||||||
|
port?: number;
|
||||||
|
protocol?: string;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link MetadataWriter} that advertises a WebSocket through the Updates-Via header.
|
* A {@link MetadataWriter} that advertises a WebSocket through the Updates-Via header.
|
||||||
*/
|
*/
|
||||||
export class WebSocketMetadataWriter extends MetadataWriter {
|
export class WebSocketMetadataWriter extends MetadataWriter {
|
||||||
private readonly socketUrl: string;
|
private readonly socketUrl: string;
|
||||||
|
|
||||||
public constructor({ hostname = 'localhost', port = 80, protocol = 'ws:' }:
|
public constructor(settings: WebSocketSettings = {}) {
|
||||||
{ hostname?: string; port?: number; protocol?: string }) {
|
|
||||||
super();
|
super();
|
||||||
|
const { hostname = 'localhost', port = 80, protocol = 'ws:' } = settings;
|
||||||
const secure = /^(?:https|wss)/u.test(protocol);
|
const secure = /^(?:https|wss)/u.test(protocol);
|
||||||
const socketUrl = new URL(`${secure ? 'wss' : 'ws'}://${hostname}:${port}/`);
|
const socketUrl = new URL(`${secure ? 'wss' : 'ws'}://${hostname}:${port}/`);
|
||||||
if (socketUrl.hostname !== hostname) {
|
if (socketUrl.hostname !== hostname) {
|
||||||
|
@ -3,7 +3,7 @@ import { WebSocketMetadataWriter } from '../../../../../src/ldp/http/metadata/We
|
|||||||
|
|
||||||
describe('A WebSocketMetadataWriter', (): void => {
|
describe('A WebSocketMetadataWriter', (): void => {
|
||||||
it('writes a default HTTP WebSocket.', async(): Promise<void> => {
|
it('writes a default HTTP WebSocket.', async(): Promise<void> => {
|
||||||
const writer = new WebSocketMetadataWriter({});
|
const writer = new WebSocketMetadataWriter();
|
||||||
const response = createResponse();
|
const response = createResponse();
|
||||||
await writer.handle({ response } as any);
|
await writer.handle({ response } as any);
|
||||||
expect(response.getHeaders()).toEqual({ 'updates-via': 'ws://localhost' });
|
expect(response.getHeaders()).toEqual({ 'updates-via': 'ws://localhost' });
|
||||||
|
Loading…
x
Reference in New Issue
Block a user