mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00
change: Use solid-0.1 as protocol string.
See https://github.com/solid/solid-spec/pull/230
This commit is contained in:
parent
748476afbb
commit
5bb7822dc7
@ -6,10 +6,10 @@ import { WebSocketHandler } from '../server/WebSocketHandler';
|
|||||||
import { parseForwarded } from '../util/HeaderUtil';
|
import { parseForwarded } from '../util/HeaderUtil';
|
||||||
import type { ResourceIdentifier } from './representation/ResourceIdentifier';
|
import type { ResourceIdentifier } from './representation/ResourceIdentifier';
|
||||||
|
|
||||||
const VERSION = 'solid/0.1.0-alpha';
|
const VERSION = 'solid-0.1';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of Solid WebSockets API Spec solid/0.1.0-alpha
|
* Implementation of Solid WebSockets API Spec solid-0.1
|
||||||
* at https://github.com/solid/solid-spec/blob/master/api-websockets.md
|
* at https://github.com/solid/solid-spec/blob/master/api-websockets.md
|
||||||
*/
|
*/
|
||||||
class WebSocketListener extends EventEmitter {
|
class WebSocketListener extends EventEmitter {
|
||||||
@ -30,7 +30,6 @@ class WebSocketListener extends EventEmitter {
|
|||||||
public start({ headers, socket }: HttpRequest): void {
|
public start({ headers, socket }: HttpRequest): void {
|
||||||
// Greet the client
|
// Greet the client
|
||||||
this.sendMessage('protocol', VERSION);
|
this.sendMessage('protocol', VERSION);
|
||||||
this.sendMessage('warning', 'Unstandardized protocol version, proceed with care');
|
|
||||||
|
|
||||||
// Verify the WebSocket protocol version
|
// Verify the WebSocket protocol version
|
||||||
const protocolHeader = headers['sec-websocket-protocol'];
|
const protocolHeader = headers['sec-websocket-protocol'];
|
||||||
@ -116,7 +115,7 @@ class WebSocketListener extends EventEmitter {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides live update functionality following
|
* Provides live update functionality following
|
||||||
* the Solid WebSockets API Spec solid/0.1.0-alpha
|
* the Solid WebSockets API Spec solid-0.1
|
||||||
*/
|
*/
|
||||||
export class UnsecureWebSocketsProtocol extends WebSocketHandler {
|
export class UnsecureWebSocketsProtocol extends WebSocketHandler {
|
||||||
private readonly logger = getLoggerFor(this);
|
private readonly logger = getLoggerFor(this);
|
||||||
|
@ -49,7 +49,7 @@ describe('A server with the Solid WebSockets API behind a proxy', (): void => {
|
|||||||
const messages = new Array<string>();
|
const messages = new Array<string>();
|
||||||
|
|
||||||
beforeAll(async(): Promise<void> => {
|
beforeAll(async(): Promise<void> => {
|
||||||
client = new WebSocket(`ws://localhost:${port}`, [ 'solid/0.1.0-alpha' ], { headers });
|
client = new WebSocket(`ws://localhost:${port}`, [ 'solid-0.1' ], { headers });
|
||||||
client.on('message', (message: string): any => messages.push(message));
|
client.on('message', (message: string): any => messages.push(message));
|
||||||
await new Promise((resolve): any => client.on('open', resolve));
|
await new Promise((resolve): any => client.on('open', resolve));
|
||||||
});
|
});
|
||||||
@ -64,8 +64,7 @@ describe('A server with the Solid WebSockets API behind a proxy', (): void => {
|
|||||||
|
|
||||||
it('sends the protocol version.', (): void => {
|
it('sends the protocol version.', (): void => {
|
||||||
expect(messages).toEqual([
|
expect(messages).toEqual([
|
||||||
'protocol solid/0.1.0-alpha',
|
'protocol solid-0.1',
|
||||||
'warning Unstandardized protocol version, proceed with care',
|
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ describe('An UnsecureWebSocketsProtocol', (): void => {
|
|||||||
const upgradeRequest = {
|
const upgradeRequest = {
|
||||||
headers: {
|
headers: {
|
||||||
host: 'mypod.example',
|
host: 'mypod.example',
|
||||||
'sec-websocket-protocol': 'solid/0.1.0-alpha, other/1.0.0',
|
'sec-websocket-protocol': 'solid-0.1, other/1.0.0',
|
||||||
},
|
},
|
||||||
socket: {
|
socket: {
|
||||||
secure: true,
|
secure: true,
|
||||||
@ -36,9 +36,8 @@ describe('An UnsecureWebSocketsProtocol', (): void => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('sends a protocol message.', (): void => {
|
it('sends a protocol message.', (): void => {
|
||||||
expect(webSocket.messages).toHaveLength(2);
|
expect(webSocket.messages).toHaveLength(1);
|
||||||
expect(webSocket.messages.shift()).toBe('protocol solid/0.1.0-alpha');
|
expect(webSocket.messages.shift()).toBe('protocol solid-0.1');
|
||||||
expect(webSocket.messages.shift()).toBe('warning Unstandardized protocol version, proceed with care');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('warns when receiving an unexpected message.', (): void => {
|
it('warns when receiving an unexpected message.', (): void => {
|
||||||
@ -146,9 +145,9 @@ describe('An UnsecureWebSocketsProtocol', (): void => {
|
|||||||
socket: {},
|
socket: {},
|
||||||
} as any as HttpRequest;
|
} as any as HttpRequest;
|
||||||
await protocol.handle({ webSocket, upgradeRequest } as any);
|
await protocol.handle({ webSocket, upgradeRequest } as any);
|
||||||
expect(webSocket.messages).toHaveLength(3);
|
expect(webSocket.messages).toHaveLength(2);
|
||||||
expect(webSocket.messages.pop())
|
expect(webSocket.messages.pop())
|
||||||
.toBe('warning Missing Sec-WebSocket-Protocol header, expected value \'solid/0.1.0-alpha\'');
|
.toBe('warning Missing Sec-WebSocket-Protocol header, expected value \'solid-0.1\'');
|
||||||
expect(webSocket.close).toHaveBeenCalledTimes(0);
|
expect(webSocket.close).toHaveBeenCalledTimes(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -161,8 +160,8 @@ describe('An UnsecureWebSocketsProtocol', (): void => {
|
|||||||
socket: {},
|
socket: {},
|
||||||
} as any as HttpRequest;
|
} as any as HttpRequest;
|
||||||
await protocol.handle({ webSocket, upgradeRequest } as any);
|
await protocol.handle({ webSocket, upgradeRequest } as any);
|
||||||
expect(webSocket.messages).toHaveLength(3);
|
expect(webSocket.messages).toHaveLength(2);
|
||||||
expect(webSocket.messages.pop()).toBe('error Client does not support protocol solid/0.1.0-alpha');
|
expect(webSocket.messages.pop()).toBe('error Client does not support protocol solid-0.1');
|
||||||
expect(webSocket.close).toHaveBeenCalledTimes(1);
|
expect(webSocket.close).toHaveBeenCalledTimes(1);
|
||||||
expect(webSocket.listenerCount('message')).toBe(0);
|
expect(webSocket.listenerCount('message')).toBe(0);
|
||||||
expect(webSocket.listenerCount('close')).toBe(0);
|
expect(webSocket.listenerCount('close')).toBe(0);
|
||||||
@ -174,13 +173,13 @@ describe('An UnsecureWebSocketsProtocol', (): void => {
|
|||||||
const upgradeRequest = {
|
const upgradeRequest = {
|
||||||
headers: {
|
headers: {
|
||||||
forwarded: 'proto=https;host=other.example',
|
forwarded: 'proto=https;host=other.example',
|
||||||
'sec-websocket-protocol': 'solid/0.1.0-alpha',
|
'sec-websocket-protocol': 'solid-0.1',
|
||||||
},
|
},
|
||||||
socket: {},
|
socket: {},
|
||||||
} as any as HttpRequest;
|
} as any as HttpRequest;
|
||||||
await protocol.handle({ webSocket, upgradeRequest } as any);
|
await protocol.handle({ webSocket, upgradeRequest } as any);
|
||||||
webSocket.emit('message', 'sub https://other.example/protocol/foo');
|
webSocket.emit('message', 'sub https://other.example/protocol/foo');
|
||||||
expect(webSocket.messages).toHaveLength(3);
|
expect(webSocket.messages).toHaveLength(2);
|
||||||
expect(webSocket.messages.pop()).toBe('ack https://other.example/protocol/foo');
|
expect(webSocket.messages.pop()).toBe('ack https://other.example/protocol/foo');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user