code: func handleWebsocketHelp(wsc *wsClient, icmd interface{}) (interface{}, error) {
  	cmd, ok := icmd.(*btcjson.HelpCmd)
  	if !ok {
  		return nil, btcjson.ErrRPCInternal
  	}
  
  	// Provide a usage overview of all commands when no specific command
  	// was specified.
  	var command string
  	if cmd.Command != nil {
  		command = *cmd.Command
  	}
  	if command == "" {
  		usage, err := wsc.server.helpCacher.rpcUsage(true)
  		if err != nil {
  			context := "Failed to generate RPC usage"
  			return nil, internalRPCError(err.Error(), context)
  		}
  		return usage, nil
  	}
  
  	// Check that the command asked for is supported and implemented.
  	// Search the list of websocket handlers as well as the main list of
  	// handlers since help should only be provided for those cases.
  	valid := true
  	if _, ok := rpcHandlers[command]; !ok {
  		if _, ok := wsHandlers[command]; !ok {
  			valid = false
  		}
  	}
  	if !valid {
  		return nil, &btcjson.RPCError{
  			Code:    btcjson.ErrRPCInvalidParameter,
  			Message: "Unknown command: " + command,
  		}
  	}
  
  	// Get the help for the command.
  	help, err := wsc.server.helpCacher.rpcMethodHelp(command)
  	if err != nil {
  		context := "Failed to generate help"
  		return nil, internalRPCError(err.Error(), context)
  	}
  	return help, nil
  }
docs: // handleWebsocketHelp implements the help command for websocket connections.