You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Realizing that websockets haven't actually been implemented here (yet!), I would be very interested in hearing how you plan to design this feature. I have implemented this for Trellis according to the SOLID specification, but I haven't yet merged the implementation into master. Eventually, I'd like to get clarification in the specification itself, but having some implementation experience can be really useful when writing up an issue for the spec. I would be interested if any one has insights about any of these questions:
The WebSocket protocol itself does not support authentication (BasicAuth is, effectively, deprecated), and the SOLID spec is silent about both AuthN and AuthZ for WebSockets. One thought I had involved having a client send an auth <token> request before the sub <URL> request, applying the same WebACL rules that exist for resource access.
There are no defined server responses to client requests. For instance, if the auth method is supported, should the server indicate whether that request succeeded? What if a client tries to subscribe to a resource URL that doesn't exist or which is not in the domain of the server? If auth is supported, what if a client subscribes to a resource that the client can't access? What if the client sends a syntactically invalid payload?
Can a client send multiple sub <URL> requests? That is, can a single WebSocket connection be used to listen to multiple resources? Or would a second request effectively end the first request?
Should the payloads be more structured than just <command> <URL>? I like the simplicity of the current structure, but if JSON-LD was used, it might make it easier to extend the existing behaviors (it may also make the protocol more difficult to consume and implement).
If a client subscribes to a container (e.g. /container), should that client be notified of changes only to direct descendants (e.g. /container/child) or all descendants, transitively (e.g. /container/subcontainer/subsubcontainer/child)
Realizing that websockets haven't actually been implemented here (yet!), I would be very interested in hearing how you plan to design this feature. I have implemented this for Trellis according to the SOLID specification, but I haven't yet merged the implementation into master. Eventually, I'd like to get clarification in the specification itself, but having some implementation experience can be really useful when writing up an issue for the spec. I would be interested if any one has insights about any of these questions:
The WebSocket protocol itself does not support authentication (BasicAuth is, effectively, deprecated), and the SOLID spec is silent about both AuthN and AuthZ for WebSockets. One thought I had involved having a client send an
auth <token>request before thesub <URL>request, applying the same WebACL rules that exist for resource access.There are no defined server responses to client requests. For instance, if the
authmethod is supported, should the server indicate whether that request succeeded? What if a client tries to subscribe to a resource URL that doesn't exist or which is not in the domain of the server? If auth is supported, what if a client subscribes to a resource that the client can't access? What if the client sends a syntactically invalid payload?Can a client send multiple
sub <URL>requests? That is, can a single WebSocket connection be used to listen to multiple resources? Or would a second request effectively end the first request?Should the payloads be more structured than just
<command> <URL>? I like the simplicity of the current structure, but if JSON-LD was used, it might make it easier to extend the existing behaviors (it may also make the protocol more difficult to consume and implement).If a client subscribes to a container (e.g.
/container), should that client be notified of changes only to direct descendants (e.g./container/child) or all descendants, transitively (e.g./container/subcontainer/subsubcontainer/child)