Pipeline binding with [Parameter(ValueFromPipelineByPropertyName)] is a great trick, but it's not always as helpful as directly working with ambiguous objects and parameter sets.
With this in mind, Get-WebSocket should special case the inputs of job objects and rebind their parameters.
If a job has an HttpListener, it's prefixes should become the $RootUrl.
If a job has a .SocketUrl, it should become the $SocketUrl .